如何撤消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)
{
}
}
答案 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');
});