迁移后的拉拉维尔种子

2022-08-30 13:12:53

在迁移完成后,是否可以在迁移中放入什么内容,以便在表自动为表设定测试数据的种子?

还是必须单独播种?


答案 1

您可以使用在迁移完成后自动设定种子的选项进行调用:migrate:refresh--seed

php artisan migrate:refresh --seed

这将回滚并重新运行所有迁移,并在之后运行所有播种机。


作为额外的一点,您也可以始终使用从应用程序内部运行工匠命令:Artisan::call()

Artisan::call('db:seed');

Artisan::call('db:seed', array('--class' => 'YourSeederClass'));

如果你想要特定的播种机类。


答案 2

如果您不想删除现有数据,并希望在迁移后播种

lukasgeiter的答案对于测试数据是正确的,但按照工匠命令运行

php artisan migrate:refresh --seed

在生产中将刷新数据库,删除从前端输入或更新的任何数据。

如果要在迁移过程中为数据库设定种子(例如,对应用程序推出更新以保留现有数据),例如添加新的表国家/地区以及种子数据,则可以执行以下操作:

创建数据库播种器示例 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');
    }
}

如果 YourTableSeeder 类存在未找到 php 类错误,请运行。composer dump-autoload


推荐