Miałem ten sam problem. Naprawiono to przez dodanie nullable
do pola:
Schema::create('table_name', function (Blueprint $table) {
...
$table->integer('some_id')->unsigned()->nullable();
$table->foreign('some_id')->references('id')->on('other_table');
...
});
Zwróć uwagę, że po migracji wszystkie istniejące wiersze będą miały some_id = NULL
.
UPD :
Od Laravela 7 jest krótsza droga do zrobienia tego samego:
$table->foreignId('some_id')->nullable()->constrained();
Bardzo ważne jest również, aby nullable
przechodzi PRZED constrained
.
Więcej informacji znajdziesz tutaj, w oficjalnej dokumentacji