Seeder is mainly to be used with test data。

在 Laravel 中,我们常用 Database: Seeding 操作填充测试数据,但在正式环境中使用 Seed 并不安全。

因为在测试环境中,无论运行多少次 php artisan db:seed 都无任何数据丢失的风险,而在正式环境中,这个操作一旦被执行就会被遗忘。所以,在生产环境中,我们选择使用迁移文件替代 Seed。

在迁移文件中,使用 DB::table($tableName)->insert() 方法来写入数据:

class TestTable extends Migration
{
protected $tableName = 'tests';

/**
* Run the migrations.
*
* @return void
*/
public function up()
{
DB::table($this->tableName)->insert([
[
'test' => 1,
],
[
'test' => 2,
],
]);
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
// ...
}
}

这样一来,一旦执行迁移文件,这次数据写入就会被记录到迁移记录中,防止下次重复执行。

参考资料