如何使用 Laravel 迁移从列中删除唯一约束?

How to remove unique constraint from a column using Laravel migrations?

我必须使用 Laravel 迁移从电子邮件列中删除唯一约束。这是我的代码:

class AlterEmailToUsers extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('email')->unique(false)->nullable()->change();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::table('users', function (Blueprint $table) {
       $table->string('email')->nullable(false)->unique()->change();
    });
}

}

但是当我 运行 php artisan migrate 时,我得到以下错误:

SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'users_email_unique' (SQL: alter table `users` add unique `users_email_unique`(`email`))
 public function up()
 {
   Schema::table('users', function (Blueprint $table) {
    $table->string('email')->unique(false)->nullable()->change();
   });
  }

改为

$table->dropUnique('users_email_unique');

提供的解决方案工作得很好,但这里只有一个小提示:
您可以像这样传递一个包含列名称的数组:

$table->dropUnique(['email']); 

在这种情况下,Laravel 将根据其约定自动生成索引名称