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
相关产品推荐
相关产品推荐

