如何修改 Laravel 中的迁移?

新手上路,请多包涵

我正在尝试修改现有的迁移。这是我当前的迁移类:

 class CreateLogForUserTable extends Migration
{
    public function up()
    {
        Schema::create('log_for_user', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id');
            $table->string('table_name');
            $table->string('error_message');
            $table->unsignedTinyInteger('error_code');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::drop('log_for_user');
    }
}

我已经执行了一次 php artisan migrate 命令。现在我需要将 ->nullable() 方法添加到 error_message 列。所以我编辑了我的迁移,如下所示:

 .
.
    $table->string('error_message')->nullable();
.
.

但是当我再次执行 php artisan migrate 时,它说:

没有什么可以迁移的。

如何应用新版本的迁移?

原文由 stack 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 313
2 个回答

您应该使用命令创建一个新的迁移:

 php artisan make:migration update_error_message_in_log_for_user_table

然后,在创建的迁移类中,使用 change 方法添加这一行,如下所示:

 class UpdateLogForUserTable extends Migration
{
    public function up()
    {
        Schema::table('log_for_user', function (Blueprint $table) {
            $table->string('error_message')->nullable()->change();
        });
    }

    public function down()
    {
        Schema::table('log_for_user', function (Blueprint $table) {
            $table->string('error_message')->change();
        });
    }
}

要进行这些更改并运行迁移,请使用以下命令:

 php artisan migrate

要回滚更改,请使用以下命令:

 php artisan migrate:rollback

您可以通过向回滚命令提供 step 选项来回滚有限数量的迁移。例如,以下命令将回滚最后五次迁移:

 php artisan migrate:rollback --step=5

查看有关 使用迁移修改列的 更多信息

原文由 Saumya Rastogi 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您的应用未在生产环境中并且您为数据播种,那么您能做的最好的事情就是运行:

 php artisan migrate:refresh --seed

此命令将删除所有表并重新创建它们。然后它将播种数据。

如果您在开发期间为每个更改创建额外的迁移,您最终会得到数百个迁移类。

原文由 Alexey Mezenin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏