在迁移中,我将enabled
字段更改为默认设置为1。
public function up()
{
Schema::table('client', function (Blueprint $table) {
$table->boolean('enabled')->default(1)->change();
});
}
在down()
方法中 - 如何删除default()
?我知道可以default(0)
但是在创建表期间从未创建默认值。
答案 0 :(得分:32)
令人惊讶的是,->default(NULL)
从表中删除了默认值:
public function up()
{
Schema::table('client', function (Blueprint $table) {
$table->boolean('enabled')->default(NULL)->change();
});
}
省略default
电话无效,因为laravel
在diff和current state之间产生了current state + specified changes。没有指定更改,没有差异。
之后,doctrine
生成ALTER TABLE statement(特别是生成的列声明),将NULL
value视为默认值not being specified。
答案 1 :(得分:3)
由于无法使用Laravel函数删除此语句,因此down函数必须以raw格式执行该语句。它应该是这样的:
public function down()
{
Schema::table('client', function ($table) {
DB::statement('ALTER TABLE' . $table . 'ALTER COLUMN enabled DROP DEFAULT');
});
}
要执行此迁移,您需要在迁移的顶部包含:
use Illuminate\Support\Facades\DB;