【发布时间】:2014-09-27 04:19:04
【问题描述】:
有没有办法“软删除”多对多关系?我已经在我的数据透视表中添加了一个deleted_at 列,并且正在使用SoftDeletingTrait。但是当你detach这两个关系时,该行被完全删除。
我有表 clients、users 和 client_user。我希望不知何故,使用User::find($user_id)->detach($client_id) 不会真正删除数据透视行,而是将deleted_at 设置为当前时间戳。
然后在此之后继续,我不希望能够恢复软删除的项目。但是,此刻,即使我手动设置deleted_at的值,我仍然得到结果
【问题讨论】:
-
我的问题是 - 你为什么要软删除它?这是您可以轻松取回的数据。软删除用作您不想丢失的数据的一种机制,即使它是被故意删除的 - 例如客户端和用户。
-
@Oddman,好吧,也许我给出的表格示例很糟糕。但我实际上拥有的是一个客户端创建然后将其发送给所有用户的请求表。一旦用户完成请求以记录人们提交请求的时间,我想然后软删除数据透视表
-
我猜你需要的只是使用
SoftDeletingTrait的自定义数据透视模型 - 你试过了吗? -
是的,我这样做了,它仍然会删除该行。
SoftDeletingTrait不适用于数据透视表。 -
@Kousha 是的,事实上,如果没有自定义关系对象处理你需要的所有东西,就没有办法做到这一点。
标签: laravel laravel-4 eloquent