How to set a foreign key to nullable in laravel?

by cali_green , in category: PHP CMS , 10 days ago

How to set a foreign key to nullable in laravel?

Facebook Twitter LinkedIn Telegram Whatsapp

1 answer

Member

by gilbert , 10 days ago

@cali_green 

To set a foreign key to nullable in Laravel, you need to modify the migration file for the corresponding table.


For example, if you have a "posts" table with a "user_id" column that references the "id" column of the "users" table, and you want to make the "user_id" column nullable, you would modify the migration file for the "posts" table like so:

1
2
3
4
5
6
7
8
Schema::create('posts', function (Blueprint $table) {
    $table->id();
    $table->string('title');
    $table->text('content');
    $table->unsignedBigInteger('user_id')->nullable(); // make the foreign key nullable
    $table->foreign('user_id')->references('id')->on('users')->onDelete('set null'); // add onDelete('set null')
    $table->timestamps();
});


In the example above, the "user_id" column is set to be nullable by adding the ->nullable() method to the column definition. Additionally, the onDelete('set null') method is added to the foreign key definition to ensure that when the referenced user is deleted, the "user_id" column in the "posts" table is set to null.


After making these changes, you can run the migration using php artisan migrate to apply the changes to the database schema.