请注意,这仅在 Laravel 5+ 中才有可能。
首先你需要教义/dbal包:
composer require doctrine/dbal
现在在您的迁移中,您可以执行此操作以使该列可以为空:
public function up()
{
Schema::table('users', function (Blueprint $table) {
// change() tells the Schema builder that we are altering a table
$table->integer('user_id')->unsigned()->nullable()->change();
});
}
您可能想知道如何恢复此操作。遗憾的是,不支持这种语法:
// Sadly does not work :'(
$table->integer('user_id')->unsigned()->change();
这是恢复迁移的正确语法:
$table->integer('user_id')->unsigned()->nullable(false)->change();
或者,如果您愿意,可以编写原始查询:
public function down()
{
/* Make user_id un-nullable */
DB::statement('UPDATE `users` SET `user_id` = 0 WHERE `user_id` IS NULL;');
DB::statement('ALTER TABLE `users` MODIFY `user_id` INTEGER UNSIGNED NOT NULL;');
}