在主表中软删除时如何关闭数据删除?

时间:2013-08-12 15:31:32

标签: php many-to-many laravel eloquent soft-delete

我在Laravel的Eloquent ORM中有一个Users和一个Groups表。组中可以有多个用户,用户可以分为多个组,因此我使用数据透视表来实现多对多关系。实际上,这种关系并不是多对多的,因为每个用户只能在一个组中,但系统是这样设计的。我软删除Users表中的行,如果需要,我可以稍后恢复用户。

问题是当我删除用户时,系统也会自动删除数据透视表中的条目。这总是一个条目。我没有将其设置为这样,只将protected $softDelete = true;行添加到Users模型,所以我不明白为什么系统会自动删除数据透视表项。

我不想软删除数据透视表项,我想只对用户进行软删除,系统不应该触摸任何其他内容。
我可以创建自己的删除功能,将deleted_at变量设置为实际时间,但这样,如果需要,我可以通过将true更改为false来简单地关闭软删除此

为什么系统会自动删除数据透视表项,如何关闭此行为?

1 个答案:

答案 0 :(得分:1)

检查数据库是否使用外键,可以将其设置为ON UPDATE,ON DELETE" CASCADE"。您需要将其设置为" NO ACTION"

CONSTRAINT `fk_USER_Address_1` FOREIGN KEY (`userId`) REFERENCES `USER` (`userId`) ON UPDATE CASCADE ON DELETE CASCADE,

CONSTRAINT `fk_USER_Address_1` FOREIGN KEY (`userId`) REFERENCES `USER` (`userId`) ON UPDATE CASCADE ON DELETE NO ACTION,