目前我似乎无法解决这个问题。
我有3个表,兴趣,interest_user和用户,他们之间建立了多对多的关系。
如果我删除了兴趣,我想确保数据透视表中的任何记录都被删除(否则我会在线下遇到错误)。
可以在兴趣表上使用$ table-> foreign()来完成(我不这么认为,因为没有要引用的id)。否则,当删除兴趣并删除每个支点时,我是否必须遍历所有关系?
我想我会在一对多的关系中遇到同样的问题
一个类别有很多兴趣。如果我删除一个类别,我认为我不能在类别表上有一个与兴趣相关的外键。我还需要将类别删除级联到所有interest_user记录。
任何指导都会非常受欢迎,因为我的大脑有点疲惫。
干杯! 亚历
答案 0 :(得分: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');
删除用户或兴趣时,将删除与该用户关联或对数据透视表感兴趣的行。
如果您正在处理一对多(例如,用户和信用卡)。在信用卡表上你将有一个user_id并设置外键,如下所示:
$table->foreign('user_id')->references('id')->on('users')->on_delete('cascade');
(基本上与多对多一样)
因此,当您删除用户时,与该用户关联的信用卡表上的行也将被删除。