如何删除多列上的唯一键?

时间:2014-05-28 03:03:58

标签: laravel migration

如何撤消Laravel中多列上添加的唯一键?基本上,这个迁移代码的down()函数应该包含什么:

public function up()
{
    Schema::table('topics', function($table)
    {
        $table->unique(array('subject_id', 'grade_id', 'semester_id', 'name'));
    }
}


/**
 * Reverse the migrations.
 *
 * @return void
 */

public function down()
{
    Schema::table('topics', function($table)
    {

    }
}

2 个答案:

答案 0 :(得分:13)

drop a unique index,请使用dropUnique('name_of_index')

如果您未在unique()的第二个参数中指定索引名称,则索引的名称将为tableName_fieldsSeperatedByUnderscore_unique

public function down()
{
    Schema::table('topics', function($table)
    {
        $table->dropUnique('topics_subject_id_grade_id_semester_id_name_unique');
    }
}

答案 1 :(得分:1)

有两种方法可以删除唯一索引:

第一种方法: 在dropUnique()函数中,我们可以传递数组,这样就不需要使用完全唯一的索引名称,如“tableName_fieldsSeperatedByUnderscore_unique”。这是代码段

Schema::table('users', function (Blueprint $table) {
      $table->dropUnique(['email']);
});

这将删除列'email'的唯一索引。

第二种方法: 这种方法与Marwelln所描述的完全相同,我仍然想再次提到这里。您可以在dropUnique()中传递唯一索引名称,它也可以工作。但请确保您对唯一索引名称有信心。对此的代码如下所示:

Schema::table('users', function (Blueprint $table) {
          $table->dropUnique('users_email_unique');
});