J'ai eu le même problème. Corrigé en ajoutant nullable
au champ :
Schema::create('table_name', function (Blueprint $table) {
...
$table->integer('some_id')->unsigned()->nullable();
$table->foreign('some_id')->references('id')->on('other_table');
...
});
Notez qu'après la migration, toutes les lignes existantes auront some_id = NULL
.
UPD :
Depuis Laravel 7, il existe un moyen plus court de faire la même chose :
$table->foreignId('some_id')->nullable()->constrained();
Il est également très important que nullable
va AVANT constrained
.
Vous trouverez plus d'informations ici, dans la documentation officielle