You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中中间表detach未触发观察者deleted方法,需创建detached吗?

问题解答
  • 首先明确:不需要为观察者创建detached方法,Laravel的模型观察者体系里并没有这个默认事件。

  • 为什么deleted方法没触发?
    当你调用关联的detach()方法时,Laravel底层是直接执行数据库语句删除中间表记录,并不会实例化ProductShop模型对象,自然不会触发模型的deleted观察者方法——只有通过模型实例调用delete()方法时,才会触发对应的观察者事件。

  • 解决办法:
    如果你想要触发ProductShop模型的deleted观察者,别用关联的detach(),改为通过中间表模型直接删除记录:

    // 示例:删除指定商品和店铺的关联记录
    ProductShop::where('product_id', $product->id)
                ->where('shop_id', $shop->id)
                ->delete();
    

    这种方式会触发模型的deleted观察者方法,满足你的需求。

内容的提问来源于stack exchange,提问作者aref razavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:06:24