luk*_*ter 43
您可以migrate:refresh使用--seed选项调用以在迁移完成后自动播种:
php artisan migrate:refresh --seed
Run Code Online (Sandbox Code Playgroud)
这将回滚并重新运行所有迁移并在之后运行所有播种器.
同样多一点,您也可以始终使用Artisan::call()从应用程序内部运行工匠命令:
Artisan::call('db:seed');
Run Code Online (Sandbox Code Playgroud)
要么
Artisan::call('db:seed', array('--class' => 'YourSeederClass'));
Run Code Online (Sandbox Code Playgroud)
如果你想要特定的播种机课程.
lukasgeiter的答案对于测试数据是正确的,但是按照工匠命令运行
php artisan migrate:refresh --seed
Run Code Online (Sandbox Code Playgroud)
在生产环境中,将刷新您的数据库,删除从前端输入或更新的所有数据。
如果要在迁移过程中为数据库设置种子(例如,对应用程序进行更新以保留现有数据),例如将新的表国家/地区与种子数据一起添加,则可以执行以下操作:
创建数据库播种器示例YourSeeder.php和位置表迁移
class YourTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('tablename', function (Blueprint $table) {
$table->increments('id');
$table->string('name',1000);
$table->timestamps();
$table->softDeletes();
});
$seeder = new YourTableSeeder();
$seeder->run();
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('tablename');
}
Run Code Online (Sandbox Code Playgroud)
}
尽管lukasgeiter的回答是正确的,但我想详细说明您的第二个问题。
还是您必须单独播种?
是。由于您在谈论测试数据,因此应避免将种子 与迁移耦合在一起。当然,如果这不是测试数据,而是应用程序数据,则始终可以将插入数据作为迁移的一部分。
顺便说一句,如果您想在测试过程中$this->seed()植入数据,则可以从Laravel测试用例中调用。