Voici la réponse complète pour le futur lecteur. Notez que cela n'est possible que dans Laravel 5+.
Tout d'abord, vous aurez besoin du package doctrine / dbal :
composer require doctrine/dbal
Maintenant, dans votre migration, vous pouvez le faire pour rendre la colonne nullable:
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();
});
}
Vous vous demandez peut-être comment annuler cette opération. Malheureusement, cette syntaxe n'est pas prise en charge:
// Sadly does not work :'(
$table->integer('user_id')->unsigned()->change();
Voici la syntaxe correcte pour annuler la migration:
$table->integer('user_id')->unsigned()->nullable(false)->change();
Ou, si vous préférez, vous pouvez écrire une requête brute:
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;');
}
J'espère que vous trouverez cette réponse utile. :)