Laravel - Migrations - Creating Indexes

The Laravel schema builder supports several types of indexes. The following example creates a new email column and specifies that its values should be unique. To create the index, we can chain the unique method onto the column definition:

    
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;
    
    Schema::table('users', function (Blueprint $table) {
        $table->string('email')->unique();
    });
	

Alternatively, you may create the index after defining the column. To do so, you should call the unique method on the schema builder blueprint. This method accepts the name of the column that should receive a unique index:

    
    $table->unique('email');
	

You may even pass an array of columns to an index method to create a compound (or composite) index:

    
    $table->index(['account_id', 'created_at']);
	

When creating an index, Laravel will automatically generate an index name based on the table, column names, and the index type, but you may pass a second argument to the method to specify the index name yourself:

    
    $table->unique('email', 'unique_email');