php 迁移后的幼虫种子

z4bn682m  于 2023-05-05  发布在  PHP
关注(0)|答案(4)|浏览(168)

在迁移完成后,我是否可以在迁移中放置一些东西来自动为表添加测试数据的种子?
“你……你……你……你……你……你……你……你……你……”

sqxo8psd

sqxo8psd1#

您可以使用--seed选项调用migrate:refresh,以便在迁移完成后自动设置种子:

php artisan migrate:refresh --seed

这将回滚并重新运行所有迁移,然后运行所有种子。
作为一个额外的功能,您还可以始终使用Artisan::call()从应用程序内部运行artisan命令:

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

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

如果您需要特定seeder类。

gcmastyq

gcmastyq2#

如果不想删除已有数据,想在迁移后种子化

lukasgeiter's answer对于测试数据是正确的,但是按照artisan命令运行

php artisan migrate:refresh --seed

将刷新数据库,删除从前端输入或更新的任何数据。
如果您想在迁移过程中为数据库设置种子(例如,对保留现有数据的应用程序进行更新),例如添加新的表countries和种子数据,您可以执行以下操作:
在database/seeds中创建一个数据库seeder示例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 class not found错误,请运行composer dump-autoload

fafcakar

fafcakar3#

虽然lukasgeiter's answer是正确的,但我想详细说明你的第二个问题。
还是要分开播种?
是的。既然你在谈论 * 测试数据 *,你就应该避免把 * 播种 * 和 * 迁移 * 结合起来。当然,如果这不是测试数据,而是应用程序数据,您可以始终将插入数据作为迁移的一部分。
顺便说一句,如果你想在测试中播种你的数据,你可以在Laravel测试用例中调用$this->seed()

bwleehnv

bwleehnv4#

Laravel Framework的运行迁移和种子特定文件的提示
迁移

php artisan migrate --path=/database/migrations/fileName.php

罗尔贝克

php artisan migrate:rollback --path=/database/migrations/fileName.php

刷新

php artisan migrate:refresh --path=/database/migrations/fileName.php

播种机

php artisan db:seed --class=classNameTableSeeder

谢谢

相关问题