Laravel迁移会更改列的默认值

时间:2016-05-03 11:55:32

标签: php laravel migration artisan

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

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的默认值?

3 个答案:

答案 0 :(得分:37)

您可以使用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();子句。

答案 1 :(得分:1)

您必须致电change function更新专栏

  <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'"/>

答案 2 :(得分:-2)

在CLI中运行以下代码

php artisan migration:refresh

它将更改您的表架构

  

您的数据将丢失