nullbyte
nullbyte

Reputation: 25

Set a foreign key to nullable in laravel

Assume I have a the tables users and persons. An entry in persons can have a user id or not. So a person can have a user, but this is optional.

This means that the foreign key in persons needs to be nullable.

This is my database migration:

$table->bigInteger('user_id')->nulleable()->unsigned();
$table->foreign('user_id')->nulleable()->references('id')->on('users');

Sadly, when I check the database columns it says, that the field is not nullable

+------------+-----------------+------+-----+---------+----------------+
| Field      | Type            | Null | Key | Default | Extra          |
+------------+-----------------+------+-----+---------+----------------+
| user_id    | bigint unsigned | NO   | MUL | NULL    |                |
+------------+-----------------+------+-----+---------+----------------+

How can I set the foreign key to nullable? I have tried various combinations I found online, but nothing works.

Thank you very much in advance.

Upvotes: 0

Views: 3259

Answers (1)

Lahcene
Lahcene

Reputation: 23

You don't have to repeat nullable (not nulleable) to the second ligne, try this :

$table->unsignedBigInteger('user_id')->nullable();
$table->foreign('user_id')->references('id')->on('users');

Upvotes: 2

Related Questions