Eu tive o mesmo problema. Corrigido adicionando
nullable
para Campo:Schema::create('table_name', function (Blueprint $table) {
...
$table->integer('some_id')->unsigned()->nullable();
$table->foreign('some_id')->references('id')->on('other_table');
...
});
Observe que após a migração todas as linhas existentes terão
some_id = NULL
. UPD :
Desde o Laravel 7, há uma maneira mais curta de fazer a mesma coisa:
$table->foreignId('some_id')->nullable()->constrained();
Também é muito importante que
nullable
vai ANTES de constrained
. Mais informações você encontra aqui, na documentação oficial