Saya memiliki masalah yang sama. Memperbaikinya dengan menambahkan nullable
ke bidang:
Schema::create('table_name', function (Blueprint $table) {
...
$table->integer('some_id')->unsigned()->nullable();
$table->foreign('some_id')->references('id')->on('other_table');
...
});
Perhatikan bahwa setelah migrasi semua baris yang ada akan memiliki some_id = NULL
.
UPD :
Sejak Laravel 7 ada cara yang lebih singkat untuk melakukan hal yang sama:
$table->foreignId('some_id')->nullable()->constrained();
Juga sangat penting bahwa nullable
berjalan SEBELUM constrained
.
Info lebih lanjut dapat Anda temukan di sini, di dokumentasi resmi