1

我目前似乎无法解决这个问题。

我有 3 个表、interests、interest_user 和 users,它们之间有一个多对多的关系设置。

如果我删除了一个兴趣,我想确保数据透视表中的所有记录也被删除(否则我猜我会遇到错误)。

这可以用兴趣表上的 $table->foreign() 来完成吗(我不这么认为,因为没有 id 可以参考)。否则,当删除兴趣并删除每个枢轴时,我是否必须遍历所有关系?

我想我会在一对多的关系中遇到同样的问题

一个类别有很多兴趣。如果我删除一个类别,我认为我不能在类别表上拥有一个链接到兴趣的外键。我还需要将类别删除级联到所有interest_user 记录。

任何指导将不胜感激,因为我的大脑有点疲惫。

干杯! 亚历克斯

4

1 回答 1

0

多对多:

根据Laravel 3 Docs on Foreign Keys,您对数据透视表的迁移应该是:

$table->foreign('user_id')->references('id')->on('users')->on_delete('cascade'); $table->foreign('interest_id')->references('id')->on('interests')->on_delete('cascade');

当您删除用户或兴趣时,与该用户关联或对数据透视表感兴趣的行将被删除。

一对多

如果您正在处理一对多(例如,用户和信用卡)。在 creditcards 表上,您将有一个 user_id 并像这样设置外键:

$table->foreign('user_id')->references('id')->on('users')->on_delete('cascade');(基本上和多对多完全一样)

因此,当您删除用户时,与该用户关联的 creditcards 表上的行也将被删除。

于 2013-10-13T05:46:13.353 回答