Laravel迁移会更改列的默认值

Bre*_*rwe 35 php migration laravel artisan

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

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

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

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

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

Ale*_*nin 45

你可以使用change()方法:

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

然后运行migrate命令.

更新

对于Laravel 4,请使用以下内容:

DB::statement('ALTER TABLE `users` CHANGE COLUMN `active` `active` INTEGER NOT NULL DEFAULT 0;');
Run Code Online (Sandbox Code Playgroud)

内部up()方法而不是Schema::table();子句.

  • 要从列中删除默认值,请使用 default(NULL) (2认同)

Jer*_*dev 5

您必须调用更改函数来更新列

if (Schema::hasTable('users')) {
    Schema::table('users', function (Blueprint $table) {
        if (Schema::hasColumn('users', 'active')) {
            $table->integer('active')->default(0)->change();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)