
Good content takes time and effort to come up with.
Please consider supporting us by just disabling your AD BLOCKER and reloading this page again.
In this article, we will see how to create foreign key columns in Laravel 7.x migrations very easily.
In earlier versions of Laravel creating foreign key constraints were easy but too much of syntax.
public function up()
{
Schema::create('customers', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('phone');
$table->string('email')->nullable();
/** Added By Foreign Keys */
$table->unsignedBigInteger('added_by');
$table->foreign('added_by')->references('id')->on('users');
/** Update By Foreign Keys */
$table->unsignedBigInteger('updated_by')->nullable();
$table->foreign('updated_by')->references('id')->on('users');
$table->timestamps();
$table->softDeletes();
});
}
Basically you have to setup the column and then declare the constraints.
/** Added By Foreign Keys */
$table->unsignedBigInteger('added_by');
$table->foreign('added_by')->references('id')->on('users');
/** Update By Foreign Keys */
$table->unsignedBigInteger('updated_by')->nullable();
$table->foreign('updated_by')->references('id')->on('users');
In Laravel 7.x the foreign key constraints adding is like breeze.
public function up()
{
Schema::create('customers', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('phone');
$table->string('email')->nullable();
/** Added By Foreign Key */
$table->foreignId('added_by')->constrained('users');
/** Updated By Foreign Key */
$table->foreignId('updated_by')->nullable()->constrained('users');
$table->timestamps();
$table->softDeletes();
});
}
It's a very simple single liner now
/** Added By Foreign Key */
$table->foreignId('added_by')->constrained('users');
/** Updated By Foreign Key */
$table->foreignId('updated_by')->nullable()->constrained('users');
If you no longer need any foreign keys then you can easily delete them using the following migrations
public function up()
{
Schema::table('customers', function (Blueprint $table) {
$table->foreignId('added_by')->constrained('users');
$table->foreignId('updated_by')->constrained('users');
});
}
public function down()
{
Schema::table('customers', function (Blueprint $table) {
$table->dropForeign(['added_by']);
$table->dropForeign(['updated_by']);
$table->dropColumn(['added_by', 'updated_by']);
});
}
First you need to delete the Foreign keys constraints, make sure to add separately.
$table->dropForeign(['added_by']);
$table->dropForeign(['updated_by']);
Then drop the columns
$table->dropColumn(['added_by', 'updated_by']);
Hope this article helped you. Please share it with your friends.
Make Laravel Controllers Slim By Skimming Form Validation Request
Getting Started With AMP (Accelerated Mobile Pages)
Factory States For Clean And Fluent Laravel Testing
Test Your Local Developing Laravel Web Application From Phone Browser Without Any Software
GitHub Login With PHP Laravel Socialite
Dependency Dropdowns With Javascript And PHP
Why And How To Use PHP PDO With CRUD Examples
Plain PHP Resumable Large File Uploads In Chunks Using FlowJs
Simple Way To Create Resourceful API Controller In Laravel
PHP extension ext-intl * is missing
Sass or SCSS @function vs @mixin
Free SSL Certificate With Lets Encrypt/Certbot In Linux (Single / Multiple Domains)