Laravel 3 - Cascade删除了许多关系

时间:2013-08-19 11:40:45

标签: orm laravel foreign-keys laravel-3

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

我有3个表,兴趣,interest_user和用户,他们之间建立了多对多的关系。

如果我删除了兴趣,我想确保数据透视表中的任何记录都被删除(否则我会在线下遇到错误)。

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

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

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

任何指导都会非常受欢迎,因为我的大脑有点疲惫。

干杯! 亚历

1 个答案:

答案 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');(基本上与多对多一样)

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