我在Laravel的Eloquent ORM中有一个Users
和一个Groups
表。组中可以有多个用户,用户可以分为多个组,因此我使用数据透视表来实现多对多关系。实际上,这种关系并不是多对多的,因为每个用户只能在一个组中,但系统是这样设计的。我软删除Users
表中的行,如果需要,我可以稍后恢复用户。
问题是当我删除用户时,系统也会自动删除数据透视表中的条目。这总是一个条目。我没有将其设置为这样,只将protected $softDelete = true;
行添加到Users
模型,所以我不明白为什么系统会自动删除数据透视表项。
我不想软删除数据透视表项,我想只对用户进行软删除,系统不应该触摸任何其他内容。
我可以创建自己的删除功能,将deleted_at
变量设置为实际时间,但这样,如果需要,我可以通过将true
更改为false
来简单地关闭软删除此
为什么系统会自动删除数据透视表项,如何关闭此行为?
答案 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,