在我的 Laravel 应用程序中,我有一个名为 researces 的表和另一个名为 files 的表。 它们是一对多的关系,每个研究可以有一篇或多篇论文。 在论文迁移文件中,我使用以下方法创建了外键约束:

        //foreign key for the research model
        $table->unsignedBigInteger('research_id');
        $table->index('researach_id');

现在我想创建一个新的迁移来添加级联 onDelete,以便在删除父研究时删除论文。 我该怎么做? 我正在使用 Laravel 5.1

编辑

所以答案与接受的答案非常相似,只是我必须先删除列然后添加外键。 因为我还没有进入生产环境,所以删除列不是问题,但是如果您处于生产环境中,您最终可能会弄乱数据库中数据的一致性。 所以要小心

#1楼 票数:4 已采纳

先删除外键然后添加它

$table->dropIndex('researach_id');
$table->foreign('research_id')
->references('id')->on('researches')
->onDelete('cascade');

参考:Laravel -> 数据库:迁移 -> 外键约束

#2楼 票数:1

创建新的迁移并添加必要的外键约束以及在修改/删除外键数据时要执行的操作。

$table->foreign('research_id')
      ->references('id')->on('researches')
      ->onDelete('cascade');

文档可以在这里找到。

  ask by marmahan translate from so

未解决问题?本站智能推荐:

2回复

如何在Rails5迁移中创建具有级联删除约束的外键?

我在PostGres 9.5中使用Rails 5。 我想从search_codes表中为我的地址表创建外键,所以我创建了此迁移 但是,创建的内容如下。 请注意,约束的级联部分似乎并未创建 如何使用Rails 5迁移和PostGres创建具有级联外键约束的迁移?
4回复

Laravel-使用数据在现有表上添加外键

我有包含数据的现有表objects 。 现在我需要添加名为holdings新表并添加从对象到holdings表的关系。 在迁移文件中,我打印了这个: 并在尝试迁移时收到此错误 我有正确的数据库结构(都是 InnoDB),字段存在并且具有正确的类型(int)。 唯一不同的是,表objects充满了数据
2回复

不能删除现有表上的外键?

我正在尝试使用迁移将外键删除到现有表,但它会引发错误,如“语法错误或访问冲突:1091 不能删除顾问_id:检查该列/键是否存在”。 你能帮忙吗?
1回复

如何使用Laravel迁移向现有键添加约束

我目前在我的项目中有一个已经投入生产的数据库。 但是我在之前的迁移中没有使用约束。 现在我有表products 、 shops和中间表product_shop 。 问题是,如果我删除任何已经放在某个商店的产品,枢轴仍然保留在中间表中。 我需要强制我的数据库的参照完整性,即使尚未更改/删除任何产品/商
1回复

不能在新表Laravel5.8上添加外键

我有两个表,如用户和角色。 我想在表用户上添加外来Roles_id。 和我的角色表 我没有捕获未命中代码,我使用unsignedBigInteger ,ann仍然错误。 我正在使用- >可空 。 但没有工作。 可以找到这个错误吗? 编辑。 这个错误: SQLST
2回复

添加外键时出现Laravel迁移错误

所以我得到这个错误: Illuminate \\ Database \\ QueryException:SQLSTATE [HY000]:常规错误:1005无法创建表yamldb 。 #sql-3928_6ea (错误号:150“外键约束#sql-3928_6ea不正确”)(SQL:更改
4回复

向迁移添加外键(Laravel)

我花了一整天的时间试图弄清楚以下迁移发生了什么。 这是表的迁移。 我的想法是使用 'id_stays_abroad' 和 'user_id' 作为外键。 这是添加外键的另一个迁移 当我运行 php artisan migrate 时,出现以下错误: SQLSTATE[HY000]:一般错误:121
2回复

使用外键添加laravel迁移

我创建了一个名为“用户”的表。有一些名为“公司”,“名称”,“部门”的表。我想在用户表中添加company_id,designation_id,department_id列作为外键。 我尝试了这个,但是没有用 当我进行迁移时,它会显示此错误。 Illuminate \\ Datab