如何使用 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 将根据其约定自动生成索引名称
我必须使用 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 将根据其约定自动生成索引名称