How to Add Unique Constraint in Laravel Migration?

By Hardik Savani November 5, 2023 Category : Laravel

Hello there,

In this article, we will discuss how to add unique constraint in Laravel migration. If you're searching for an example of adding a unique constraint in Laravel migration, you've come to the right place. We will explore an example of a unique column in a Laravel migration. I'll also provide guidance on making a column unique in Laravel migration. So, without further ado, let's get into the specifics.

Laravel migration offers the unique() method as a means to include a unique constraint. I will now provide a straightforward example of how to incorporate a unique constraint through Laravel migration. Additionally, you can also add multiple unique constraints and remove existing ones. Let us now delve into a simple illustration of this process.

You will see the following examples:

1. Laravel Migration Add Unique Constraint

2. Laravel Migration Add Multiple Unique Constraint

3. Laravel Migration Add Multiple Unique Constraint 2

4. Laravel Migration Drop Unique Constraint

let's see the one by one.

Example 1: Laravel Migration Add Unique Constraint

Here, we will create products table with add Unique Constraint to code column.

Create new migration using following command:

php artisan make:migration create_products_table

Now, You can update it as like the bellow:

database/migrations/migration_name.php

<?php

use Illuminate\Database\Migrations\Migration;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Support\Facades\Schema;

return new class extends Migration

{

/**

* Run the migrations.

*/

public function up(): void

{

Schema::create('products', function (Blueprint $table) {

$table->id();

$table->string('name');

$table->string('code')->unique();

$table->text('description');

$table->timestamps();

});

}

/**

* Reverse the migrations.

*/

public function down(): void

{

Schema::dropIfExists('products');

}

};

Now, you are ready to run migration command:

php artisan migrate

You will see the layout as like the below:

Example 2: Laravel Migration Add Multiple Unique Constraint

Here, we will create products table with add Unique Constraint to code and contact_email column.

php artisan make:migration create_products_table

Now, You can update it as like the bellow:

database/migrations/migration_name.php

<?php

use Illuminate\Database\Migrations\Migration;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Support\Facades\Schema;

return new class extends Migration

{

/**

* Run the migrations.

*/

public function up(): void

{

Schema::create('products', function (Blueprint $table) {

$table->id();

$table->string('name');

$table->string('code');

$table->string('contact_email');

$table->text('description');

$table->timestamps();

$table->unique('code');

$table->unique('contact_email');

});

}

/**

* Reverse the migrations.

*/

public function down(): void

{

Schema::dropIfExists('products');

}

};

Now, you are ready to run migration command:

php artisan migrate

You will see the layout as like the below:

Example 3: Laravel Migration Add Multiple Unique Constraint 2

Here, we will create products table with add Unique Constraint to code and contact_email column.

Create new migration using following command:

php artisan make:migration create_products_table

Now, You can update it as like the bellow:

database/migrations/migration_name.php

<?php

use Illuminate\Database\Migrations\Migration;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Support\Facades\Schema;

return new class extends Migration

{

/**

* Run the migrations.

*/

public function up(): void

{

Schema::create('products', function (Blueprint $table) {

$table->id();

$table->string('name');

$table->string('code');

$table->string('contact_email');

$table->text('description');

$table->timestamps();

$table->unique(['code', 'contact_email']);

});

}

/**

* Reverse the migrations.

*/

public function down(): void

{

Schema::dropIfExists('products');

}

};

Now, you are ready to run migration command:

php artisan migrate

You will see the layout as like the below:

Example 4: Laravel Migration Drop Unique Constraint

Here, we will create products table with drop Unique Constraint to code column.

Create new migration using following command:

php artisan make:migration change_datatype_column

Now, You can update it as like the bellow:

database/migrations/migration_name.php

<?php

use Illuminate\Database\Migrations\Migration;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Support\Facades\Schema;

return new class extends Migration

{

/**

* Run the migrations.

*/

public function up(): void

{

Schema::table('products', function (Blueprint $table) {

$table->dropUnique('products_code_unique');

});

}

/**

* Reverse the migrations.

*/

public function down(): void

{

Schema::dropIfExists('products');

}

};

Now, you are ready to run migration command:

php artisan migrate

I hope it can help you...

Shares