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

Laravel 5.8 Observer的deleted方法未触发问题求助

Laravel 5.8 观察者deleted方法不触发的解决方案

问题出在你删除数据的方式上:
你使用的PaymentData::where('idx', $idx)->delete()是查询构建器的批量删除操作,这种方式不会触发模型观察者的任何事件——包括deleted方法。只有当你调用模型实例的delete()方法时,Laravel才会触发对应的观察者钩子。

修正代码

把控制器里的删除逻辑改成先获取模型实例,再调用实例的delete()方法:

Pay Controller.php

public function delete(Request $request, $idx){
    $payData = PaymentData::where('idx', $idx)->firstOrFail();
    $payData->delete();
    return response()->json(['status' => true]);
}

这样修改后,PayObserver里的deleted方法就会正常触发,进而删除关联的AppData记录。

补充说明

如果后续有批量删除需求且需要触发观察者,只能循环遍历每个模型实例并调用delete(),但这种方式在数据量较大时要注意性能问题。你的场景是单条数据删除,用上述方法完全适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:13:10