在 Laravel 8 中调整包开发的 Seeders 集成
Adjust Seeders integration for Package Development in Laravel 8
我在 laravel.7.x 中为 api 开发了一个包。 api 作为 laravel 的包裹交付。现在我想升级到laravel 8。不幸的是我无法让播种机工作。
所有包播种程序都应在
之后执行
php artisan migrate:fresh --seed
命令。
显然找不到播种机 类。例如 Target class [PostSeeder] does not exist.
但它确实存在,甚至在同一个命名空间中。
现在我尝试从 DatabaseSeeder 开始,我找到了这个。但是从那里无法触发其他播种机。
有没有人知道可以尝试什么或者有针对此问题的提示或代码片段?
非常感谢。
好的,问题解决
使用在 laravel 8 中包含工厂的新方法,即模型具有此新功能:
use Acme\YourPackage\Database\Factories\PostFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
protected static function newFactory()
{
return PostFactory::new();
}
并确保这样称呼它:
enter $this->call('Acme\YourPackage\Database\Seeders\PostSeeder');
之后确保您的命名空间和 class 路径设置正确。
我在 laravel.7.x 中为 api 开发了一个包。 api 作为 laravel 的包裹交付。现在我想升级到laravel 8。不幸的是我无法让播种机工作。
所有包播种程序都应在
之后执行php artisan migrate:fresh --seed
命令。
显然找不到播种机 类。例如 Target class [PostSeeder] does not exist.
但它确实存在,甚至在同一个命名空间中。
现在我尝试从 DatabaseSeeder 开始,我找到了这个。但是从那里无法触发其他播种机。
有没有人知道可以尝试什么或者有针对此问题的提示或代码片段?
非常感谢。
好的,问题解决
使用在 laravel 8 中包含工厂的新方法,即模型具有此新功能:
use Acme\YourPackage\Database\Factories\PostFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
protected static function newFactory()
{
return PostFactory::new();
}
并确保这样称呼它:
enter $this->call('Acme\YourPackage\Database\Seeders\PostSeeder');
之后确保您的命名空间和 class 路径设置正确。