【发布时间】:2013-08-12 15:31:32
【问题描述】:
我在 Laravel 的 Eloquent ORM 中有一个 Users 和一个 Groups 表。一个组中可以有多个用户,一个用户可以在多个组中,所以我使用数据透视表来实现多对多的关系。实际上,这种关系不是多对多的,因为每个用户只能属于一个组,但系统就是这样设计的。我软删除了Users 表中的行,因此如果需要,我可以稍后恢复用户。
问题是当我删除一个用户时,系统也会自动删除数据透视表中的条目。这始终是一个条目。我没有把它设置成这样,只是在Users模型中添加了protected $softDelete = true;这一行,所以我不明白为什么系统会自动删除pivot条目。
我不想软删除数据透视条目,我只想软删除用户,并且系统不应触及其他任何内容。
我可以创建自己的删除函数,将deleted_at 变量设置为实际时间,但是如果需要,我不能通过将true 更改为false 来简单地关闭软删除。
为什么系统会自动删除数据透视条目,如何关闭此行为?
【问题讨论】:
-
另一个答案是建议在您的多对多关系中添加一个约束来过滤,这与您的预期不完全一样,也不确定它是否有效。 stackoverflow.com/a/18144975/439427
-
我的意思是过滤废弃的关系。
-
根据我的经验,当软删除一行时,它不会删除数据透视条目,你能给我们一个你的模型和代码的例子吗?
标签: php many-to-many laravel eloquent soft-delete