56

I would do this to make my email field unique in the table.

$table->unique('email');

I've tried

public function up()
{
    Schema::table('contacts', function(Blueprint $table)
    {
        $table->dropUnique('email');
    });
}

Then, when I run php artisan migrate, I got this

enter image description here

It tell me that it's not there, but I'm 100% sure that it's there.

enter image description here

How do write a migration to undo that ?

code-8
  • 54,650
  • 106
  • 352
  • 604

2 Answers2

85

You have to do $table->dropUnique('users_email_unique');

To drop an index you must specify the index's name. Laravel assigns a reasonable name to the indexes by default. Simply concatenate the table name, the names of the column in the index, and the index type.

Ali Gajani
  • 14,762
  • 12
  • 59
  • 100
64

This the better way to drop unique. You can use the real column name here.

$table->dropUnique(['email']);
Munna Khan
  • 1,902
  • 1
  • 18
  • 24