Laravel - add foreign key on existing table with data Laravel - add foreign key on existing table with data laravel laravel

Laravel - add foreign key on existing table with data


The holding_id column should be unsigned

Create a new migration file and migrate it, migration code should be like this :

Schema::table('objects', function (Blueprint $table) {    $table->integer('holding_id')->unsigned()->change();    $table->foreign('holding_id')->references('id')->on('holdings');});

The change() method is called to change the structure of existing column.

It's not necessary to call onDelete("NO ACTION") method.


Thanks Mohammad but this solution didn't work for me as I am Laravel 5.4 and have different case here that my other table is already exists, Here what I found may it help some one.

Schema::table('objects', function (Blueprint $table) {    $table->integer('holding_id')->unsigned()->index()->nullable();    $table->foreign('holding_id')->references('id')->on('holdings');});

with index() and nullable() it made the trick.

EditNo need for index() it just need to be nullable()


To adding a foreign key, first make sure your column is marked as unsigned.

Just add a line before your line:

$table->integer('holding_id')->unsigned();$table->foreign('holding_id')->references('id')->on('holdings')->onDelete("NO ACTION");