gpt4 book ai didi

laravel - 如何在 Laravel4 中级联软删除?

转载 作者:行者123 更新时间:2023-12-01 19:53:24 27 4
gpt4 key购买 nike

尝试使用带有删除级联和软删除的外键,但运气不佳。

我有 2 个表:用户、事件。两个表都有软删除。

用户可以有 0..n 个事件。
事件有一个 user_id,用作用户的外键,如下所示:

$table->foreign('user_id')->references('id')->on('users')->onDelete('CASCADE')->onUpdate('CASCADE');

问题是,当我删除用户时,它会被软删除,但其事件不会 - 无论是软删除还是物理删除。

我做错了什么,还是这是正确的 Eloquent 行为?

其次,如果这是正确的行为,那么如何最好地实现删除级联?也许像这样重写我的模型中的delete()方法...

public function delete()
{
//delete all events...
__parent::delete()
}

最佳答案

数据库的外键不会执行任何操作,因为您没有更改相关的主键。只有更新或删除主键才会修改相关行。

从我能找到的有关该主题的所有内容来看,解决方案是使用 Eloquent 的 Model Events监听删除事件,并更新相关表。

Here's one StackOverflow question about it.

或者,您可以“扩展”delete() 方法并直接包含该功能。 Here's an example.

关于laravel - 如何在 Laravel4 中级联软删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17977749/

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