我们的团队希望能够使用播种器并在管道中运行种子命令,但是我们不想每次部署时都运行播种器,在许多情况下只运行一次,这样数据就在那里并且不会重复。
Laravel 中是否有一种内置方法可以只运行一次播种器并跟踪其历史记录,类似于迁移?
如果没有,我们的团队将不得不自己使用播种表和历史功能来实现这一点。
从迁移中调用播种器,并确保不在DatabaseSeeder
( )中引用它database/seeds/DatabaseSeeder.php
:
database/migrations/2022_01_19_seedmytable.php
:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\Artisan;
class SeedMyTable extends Migration {
public function up() {
Artisan::call('db:seed', [
'--class' => \SampleDataSeeder::class,
]);
}
}
Run Code Online (Sandbox Code Playgroud)
将其作为自己的迁移进行(推荐),或者您也可以将该Artisan::call('db:seed', ... )
位附加到另一个[新]多用途迁移的末尾。不要添加到现有的迁移脚本,否则无法保证其运行。
MyModelClass::create(...)
您还可以在迁移方法的末尾手动添加一堆语句up()
。
<?php
use App\Models\User;
use Illuminate\Database\Migrations\Migration;
class SeedMyTable extends Migration {
public function up() {
// ... [imagine table creation statements here] ...
User::create(['name' => 'Bob']);
User::create(['name' => 'Alice']);
}
}
Run Code Online (Sandbox Code Playgroud)
artisan
您也可以根据需要登录到适当的环境和命令:
$ artisan db:seed --class=SampleDataSeeder
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1583 次 |
最近记录: |