php监听表更新,Laravel 观察者observe监听update不生效问题

最近的一个项目中,我用到 Laravel5 的观察者模式,维护一个日志表,下面我大概说明一下场景和存在的问题。

服务提供者:app\Providers\ObserverServiceProvider.php

boot方法:XdFlowModel::observe(XdFlowObserver::class);

XdFlowObserver.php文件中,定义created和updated方法,用于监听XdFlowModel模型的变化。

created方法能监听到create()事件,但是updated监听不到update()方法。

后来经过多次测试,发现在更新XdFlowModel模型数据的时候,使用的是类似下面这种方法:XdFlowModel::where('id',100)->update(['status'=>1]);

这种写法其实是:Database Query,我们的观察者只能监听 ORM Query,所以修改方案如下:XdFlowModel::where('id',100)->first()->update(['status'=>1]);

或者$model = XdFlowModel::where('id',100)->first();

$model->update(['status'=>1]);

$model->save();

两种修改方案的原理是一样的,都是使用了 ORM Query,进而就能监听了。

    A+
发布日期:2022年12月23日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: