Yo tuve el mismo problema. Se solucionó agregando nullable
al campo:
Schema::create('table_name', function (Blueprint $table) {
...
$table->integer('some_id')->unsigned()->nullable();
$table->foreign('some_id')->references('id')->on('other_table');
...
});
Tenga en cuenta que después de la migración, todas las filas existentes tendrán some_id = NULL
.
UPD :
Desde Laravel 7 hay una forma más corta de hacer lo mismo:
$table->foreignId('some_id')->nullable()->constrained();
También es muy importante que nullable
va ANTES de constrained
.
Puede encontrar más información aquí, en documentación oficial