我首先创建了这样的迁移:
Schema::create('table1',function(Blueprint $table){
$table->bigIncrements('id');
$table->string('name')->unique();
$table->integer("user_id")->unsigned();
$table->foreign("user_id)->references("id")->on("users");
});
然后我想向 user_id 列添加可空属性,我写了这个迁移:
Schema::table('f_subjects', function (Blueprint $table) {
$table->integer('user_id')->nullable()->change();
$table->foreign('original_law_id')->references('id')->on('f_original_law');
});
但我收到了这个错误:
Cannot change column 'user_id': used in a foreign key constraint 'table1_user_id_foreign'
最佳答案
1-删除您的外键
$table->dropForeign('table1_user_id_foreign');
2- 更改 user_id 列定义:
//If user_id is not unsigned remove unsigned function
$table->integer('user_id')->nullable()->unsigned()->change();
3- 创建索引
$table->foreign('user_id')->references('id')->on('users');
完整迁移:
Schema::table('table1',function(Blueprint $table){
//Or disable foreign check with:
//Schema::disableForeignKeyConstraints();
$table->dropForeign('table1_user_id_foreign');
$table->integer('user_id')->nullable()->unsigned()->change();
//Remove the following line if disable foreign key
$table->foreign('user_id')->references('id')->on('users');
});
关于php - 在更改表迁移中将现有外键列设置为可为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48188202/