Имах същия проблем. Поправен е чрез добавяне на nullable
към полето:
Schema::create('table_name', function (Blueprint $table) {
...
$table->integer('some_id')->unsigned()->nullable();
$table->foreign('some_id')->references('id')->on('other_table');
...
});
Имайте предвид, че след миграцията всички съществуващи редове ще имат some_id = NULL
.
UPD :
От Laravel 7 има по-кратък начин да направите същото:
$table->foreignId('some_id')->nullable()->constrained();
Също така е много важно nullable
отива ПРЕДИ constrained
.
Повече информация можете да намерите тук, в официалната документация