これが将来の読者のための完全な答えです。これはLaravel 5+でのみ可能であることに注意してください。
まず最初にdoctrine / 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;');
}
この回答がお役に立てば幸いです。:)