gpt4 book ai didi

php - Laravel - 如何删除具有 belongsTo 关系的模型的多态关系?

转载 作者:行者123 更新时间:2023-12-03 22:34:10 25 4
gpt4 key购买 nike

我有 4 张 table 。其中两个是单态的,其中两个是多态的。

单态:
模板、模块

多态:
文件、图像

现在,templatesmodules两者都有documentsimages每个 Template有很多Module s 和 modules具有设置为在删除 templates 时级联的外键.

现在,如果我删除 Template相关 Module s 将被删除,但 Module 的关联多态关系将留在数据库中。我没有尝试过任何事情,因为我完全一无所知。

我可以做的任何事情来自动删除 Module 的关联当Template被删除?我认为这里的删除是由数据库本身处理的,而 Eloquent 与它没有任何关系。

最佳答案

因为是多态关系,级联删除不能用外键处理。

如果您仍希望在数据库级别处理删除,则需要编写某种类型的数据库触发器功能。

如果您想在应用程序级别处理此问题,还有几个选项。

一种选择是更新您的代码,以便在任何地方删除您的 Template ,你还要确保删除它的所有多态关系。

另一种选择是为 deleting 创建一个事件处理程序。事件。 deleting每当您删除 Eloquent 模型时,Eloquent 都会触发事件。在此删除事件中,您也可以访问多态关系并删除它们。

如果 deleting event 方法听起来不错,有一个包可以为您实现所有这些,并且可以很容易地为您的模型设置: shiftonelabs/laravel-cascade-deletes .完全披露:我写了这个包。

使用此软件包,您只需添加 CascadesDeletes你的特质Template模型,然后添加 $cascadeDeletes Template 时要删除的所有关系的数组的属性。实例被删除。

关于php - Laravel - 如何删除具有 belongsTo 关系的模型的多态关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41306620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com