是否有方法可以“软删除”多对多关系?我已经向数据透视表中添加了一个deleted_at
列,并且正在使用SoftDeletingTrait
。但是,当您对这两个关系执行detach
操作时,该行将被完全删除。
我有表clients
、users
和client_user
,我希望使用User::find($user_id)->detach($client_id)
不会真正删除透视行,而是将deleted_at设置为当前时间戳。
然后继续,我不希望能够得到软删除的项目回来。但是,目前,即使我手动设置deleted_at
的值,我仍然得到结果
4条答案
按热度按时间h22fl7wq1#
sd2nnvve2#
q7solyqu3#
是的,你可以在数据透视表上进行软删除,你所需要的只是给它们自己的id和时间戳。这样“SoftDeletingTrait”就可以工作了。这有点棘手,但对我来说很有效。编辑:
我还忘了提到,您必须为数据透视表创建一个模型,就像上面有人告诉您的那样=P。例如,您有一个信用额度,以及该信用额度的多个请求,这些请求用于多个credit_lines,但您希望了解每一行上请求的状态,以及从该信用额度中删除的请求,而不是从其他信用额度中删除的请求。
然后使用数据透视表为CreditLineHasRequeriments创建一个模型。
抱歉我的英语不好。
s8vozzvw4#
如果您需要在数据透视表中使用softDeletes特征,则必须扩展数据透视模型vai Laravel的常规模型,而不是数据透视模型,即
此外,必须在透视表中定义deleted_at列