Вот полный ответ для будущего читателя. Обратите внимание, что это возможно только в Laravel 5+.
Прежде всего вам понадобится пакет doctrine / dbal:
composer require doctrine/dbal
Теперь в процессе миграции вы можете сделать это, чтобы сделать столбец допускающим значение NULL:
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;');
}
Надеюсь, вы найдете этот ответ полезным. :)
person
Dmitri Chebotarev
schedule
14.09.2015