我有这个迁移文件
Schema::create('table_one', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->integer('table_two_id')->unsigned();
$table->foreign('table_two_id')->references('id')->on('table_two');
$table->timestamps();
});
我想更新以使其 - > onDelete('cascade');
$table->foreign('table_two_id')->references('id')->on('table_two')->onDelete('cascade');
这样做的最佳方式是什么?
是否有类似 - > change();
的内容由于
答案 0 :(得分:22)
删除外键,然后重新添加,然后运行迁移。
public function up()
{
Schema::table('table_one', function (Blueprint $table) {
$table->dropForeign(['table_two_id']);
$table->foreign('table_two_id')
->references('id')
->on('table_two')
->onDelete('cascade');
});
}
答案 1 :(得分:2)
您需要删除
public function up()
{
Schema::table('<tableName>', function (Blueprint $table) {
$table->dropForeign('<FK-name>');
$table->dropColumn('<FK-columnName>');
});
Schema::table('<tableName>', function (Blueprint $table) {
$table->foreignId('<FK-columnName>')->constrained()->cascadeOnDelete();
});
}
有两个查询。在 Laravel 8 上工作
答案 2 :(得分:1)
composer require doctrine/dbal
Schema::table('table_one', function (Blueprint $table) {
$table->foreignId('table_two_id')
->change()
->constrained('table_two')
->onDelete('cascade');
});
php artisan migrate
答案 3 :(得分:0)
Christopher K.是对的,在Laravel文档中说:
要删除外键,可以使用dropForeign方法。外键约束使用与索引相同的命名约定。因此,我们将连接表名和约束中的列,然后在名称后加上“ _foreign” :
$table->dropForeign('posts_user_id_foreign');
或者,您可以传递一个 array 值,该值将在删除时自动使用常规约束名称:
$table->dropForeign(['user_id']);
https://laravel.com/docs/5.7/migrations#foreign-key-constraints
答案 4 :(得分:-1)
1-设置任务:
路线:: get('foreignkeyforimg',“ foreignkey @ index”);
2-用外键名称创建控制器。
3-带有Migration类扩展名的Foreignkey控制器。
4-转到数据库并从表中手动删除旧的主键
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class Foreignkey extends Migration
{
function index(){
Schema::table('images', function (Blueprint $table) {
$table->foreign('sub_cat_id')
->references('id')
->on('subcategories')
->onDelete('cascade');
});
}
}