首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迁移后的落叶松种子

迁移后的落叶松种子
EN

Stack Overflow用户
提问于 2015-02-11 20:11:15
回答 3查看 45.8K关注 0票数 36

在迁移完成后,是否可以在迁移中自动为表添加测试数据?

还是你必须分开播种?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-11 20:16:06

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

代码语言:javascript
复制
php artisan migrate:refresh --seed

这将回滚和重新运行您的所有迁移和运行所有种子之后。

另外,您还可以始终使用Artisan::call()从应用程序内部运行手工命令:

代码语言:javascript
复制
Artisan::call('db:seed');

代码语言:javascript
复制
Artisan::call('db:seed', array('--class' => 'YourSeederClass'));

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

票数 90
EN

Stack Overflow用户

发布于 2018-11-05 05:18:59

如果您不想删除现有数据,并且希望在迁移后启动

卢卡斯盖特的回答对测试数据是正确的,但是运行以下artisan命令

代码语言:javascript
复制
php artisan migrate:refresh --seed

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

如果您希望在迁移过程中为数据库添加种子(例如,对保存现有数据的应用程序进行更新),例如添加一个新的表国家以及种子数据,则可以执行以下操作:

在数据库/种子和您的位置表迁移中创建一个数据库播种机示例YourSeeder.php

代码语言:javascript
复制
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');
    }
}

如果有一个php类未找到YourTableSeeder类的错误,请运行YourTableSeeder。

票数 53
EN

Stack Overflow用户

发布于 2015-02-11 20:28:43

虽然卢卡斯盖特的回答是对的,但我想详细说明你的第二个问题。

还是你必须分开播种?

是。由于您讨论的是测试数据,所以应该避免将种子与迁移耦合。当然,如果这不是测试数据,而是应用程序数据,则始终可以将插入数据作为迁移的一部分。

顺便提一下,如果您想将数据作为测试的一部分,可以从您的Laravel测试用例中调用$this->seed()

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28463574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档