Laravel迁移:如何更改ENUM数据类型的默认值?

时间:2018-05-30 10:19:13

标签: laravel laravel-5

在我的迁移中,我有一个名为“assets.status”的表列,数据类型为ENUM。默认值设置为“活动”,我想通过将其更改为“处理”来修改它。

1 个答案:

答案 0 :(得分:3)

您需要创建新的迁移并使用change()方法。

https://laravel.com/docs/5.6/migrations#modifying-columns

Schema::table('users', function (Blueprint $table) {
    $table->string('name', 50)->change();
});

作为提示:每当您需要将数据库更改为生产数据库时,您都不应该修改现有的迁移。始终创建新的迁移,即使是小的更改。

更新的答案

由于您无法使用Schema方法更新枚举类型,因此可以使用基础数据库外观手动更新列:

public function up()
{
    \DB::statement("
        ALTER TABLE table_name CHANGE column_name column_name ENUM('option1','option2') DEFAULT option1
    ");
}

public function down()
{
    \DB::statement("
        ALTER TABLE table_name CHANGE column_name column_name ENUM('option1','option2') DEFAULT previous_default_column
    ");
}