如何使用 Laravel 迁移从列中删除唯一约束?
Posted
技术标签:
【中文标题】如何使用 Laravel 迁移从列中删除唯一约束?【英文标题】:How to remove unique constraint from a column using Laravel migrations? 【发布时间】:2018-09-23 12:10:24 【问题描述】:我必须使用 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]: 语法错误或访问冲突: 1061 Duplicate key name 'users_email_unique' (SQL: alter table `users` add unique `users_email_unique`(`email`))
【问题讨论】:
删除索引,$table->dropUnique('email');
从“用户”表中删除唯一索引。参考here
【参考方案1】:
提供的解决方案效果很好,但这里只有一个小提示: 你可以像这样传递一个带有列名的数组:
$table->dropUnique(['email']);
在这种情况下,Laravel 将根据其约定自动生成索引名称
【讨论】:
【参考方案2】: public function up()
Schema::table('users', function (Blueprint $table)
$table->string('email')->unique(false)->nullable()->change();
);
改成
$table->dropUnique('users_email_unique');
【讨论】:
它不工作。问题不在 down 方法中,问题在 up 方法的某个地方。我正在编辑我的问题。请也查看我的问题。 我需要询问有关相同迁移的问题。我应该在这里问还是应该为它创建新问题。 我想在同一个步骤中使同一个字段可以为空。但它不能一步到位。 请给我几分钟。 它的工作非常感谢您的帮助@Kuldeep Mishra以上是关于如何使用 Laravel 迁移从列中删除唯一约束?的主要内容,如果未能解决你的问题,请参考以下文章