I'l*_*ack 24 laravel laravel-5.2
在迁移中,我将enabled
字段设置为默认设置为1.
public function up()
{
Schema::table('client', function (Blueprint $table) {
$table->boolean('enabled')->default(1)->change();
});
}
Run Code Online (Sandbox Code Playgroud)
在down()
方法-如何删除default()
?我知道可以做default(0)
但在创建表期间从未创建默认值.
x-y*_*uri 40
令人惊讶与否,->default(NULL)
从表中删除默认值:
public function up()
{
Schema::table('client', function (Blueprint $table) {
$table->boolean('enabled')->default(NULL)->change();
});
}
Run Code Online (Sandbox Code Playgroud)
省略default
调用不起作用,因为在当前状态和当前状态+指定的更改之间laravel
进行差异.没有指定更改,没有差异.
之后,doctrine
生成ALTER TABLE语句(特别是生成的列声明),将NULL
值视为未指定的默认值.
由于 Laravel 函数无法删除此语句,因此您的 down 函数必须将语句作为原始语句执行。它应该是这样的:
public function down()
{
Schema::table('client', function ($table) {
DB::statement('ALTER TABLE' . $table . 'ALTER COLUMN enabled DROP DEFAULT');
});
}
Run Code Online (Sandbox Code Playgroud)
为了执行此迁移,您需要在迁移的顶部包含:
use Illuminate\Support\Facades\DB;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8676 次 |
最近记录: |