Laravel 迁移更改列的默认值

新手上路,请多包涵

我有一个已经分配了默认值的表。例如,我们可以查看以下内容:

 Schema::create('users', function (Blueprint $table) {
            $table->increments('id')->unsigned();
            $table->integer('active')->default(1);
        });

我现在想更改活动字段的默认值。我期待做这样的事情:

 if (Schema::hasTable('users')) {
        Schema::table('users', function (Blueprint $table) {
            if (Schema::hasColumn('users', 'active')) {
                $table->integer('active')->default(0);
            }
        });
    }

但它当然告诉我该专栏已经存在。如何在不删除列的情况下简单地更新列 x 的默认值?

原文由 Brendan Van Der Merwe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 753
1 个回答

您可以使用 change() 方法:

 Schema::table('users', function ($table) {
    $table->integer('active')->default(0)->change();
});

然后运行 migrate 命令。

更新

对于 Laravel 4,使用如下内容:

 DB::statement('ALTER TABLE `users` CHANGE COLUMN `active` `active` INTEGER NOT NULL DEFAULT 0;');

up() 方法而不是 Schema::table(); 子句中。

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

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