【发布时间】:2018-06-15 18:39:09
【问题描述】:
使用--class 标志是应用特定种子而不是播种所有内容的明显方法:
php artisan db:seed --class[=CLASS]
有没有办法跟踪迄今为止在 Laravel 中应用了哪些播种器(例如,您可以通过运行 php artisan migrate:status 跟踪应用迁移的方式相同)?
此外,有没有办法应用一个范围的播种机(而不是单独指定每个类,这很麻烦)。
让我想到这一点的是“构建你不会讨厌的 API”一书中的播种器中的这一部分:
28 foreach ($tables as $table) {
29 DB::table($table)->truncate();
30 }
31
32 $this->call('MerchantTableSeeder');
33 $this->call('PlaceTableSeeder');
34 $this->call('UserTableSeeder');”
这个想法是,每次您想要运行主播种机时,都必须从头开始。但这对我们来说是不切实际的,至少在我们的暂存环境中,我们的 QA/运营人员总是会结合播种数据和手动数据输入。
【问题讨论】:
-
您能否修改您的播种机以使用
updateOrCreate()而不是create()并以这种方式解决?如果您需要做的就是确保始终存在某些记录,这是实现它的一种方法。 -
您还可以创建一个名为
seeders的表,并将其视为数据库迁移。您可以扩展Seeder类并覆盖__invoke()函数以检查它之前是否已播种。
标签: php laravel laravel-5 seed laravel-seeding