【问题标题】:Laravel 3 - Cascade deletes on many to many relationshipsLaravel 3 - 级联删除多对多关系
【发布时间】:2013-08-21 04:42:52
【问题描述】:

我现在似乎无法解决这个问题。

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

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

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

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

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

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

干杯! 亚历克斯

【问题讨论】:

    标签: orm laravel foreign-keys laravel-3


    【解决方案1】:

    多对多:

    根据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 表中的行也将被删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 2016-04-11
      • 1970-01-01
      相关资源
      最近更新 更多