Laravel 迁移:从现有外键中删除 onDelete('cascade')

Posted

技术标签:

【中文标题】Laravel 迁移:从现有外键中删除 onDelete(\'cascade\')【英文标题】:Laravel migration : Remove onDelete('cascade') from existing foreign keyLaravel 迁移:从现有外键中删除 onDelete('cascade') 【发布时间】:2015-03-25 21:09:46 【问题描述】:

我创建了这样的迁移:

// ...
$table->foreign('a')->references('b')->on('c')->onDelete('cascade');
// ...

我想在新的迁移中删除 onDelete('cascade') 而不会破坏任何东西。我该怎么做?

【问题讨论】:

【参考方案1】:

您可以尝试删除旧外键并添加然后添加一个没有onDelete的新外键:

$table->dropForeign(['a']);
$table->foreign('a')->references('b')->on('c');

【讨论】:

【参考方案2】:

要更改外键,您必须删除外键并重新创建它。不幸的是,您不能在 mysql 上修改外键

【讨论】:

以上是关于Laravel 迁移:从现有外键中删除 onDelete('cascade')的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 在迁移中删除外键

如何在 Laravel 中从外键中查看表字段

在自定义主键和外键中定义 Laravel 关系

学说迁移:向现有表添加和删除两个外键列不起作用

如何在 Laravel 迁移中创建自引用关系(外键)?

Laravel 5.2 删除外键