关于 Laravel increment 与 decrement 不能触发观察者模式的解决方案

    有时候在观察者模式中完成一些操作非常方便,比如用户的积分产生变动就一定要有一个用户积分记录。

    因为这在任何时候都是必要的,increment 与 decrement 方法是将模型先同步你所要修改的列的值然后执行sql会不触发观察者模式。

    下面的方法经过测试是可行的,只是在观察者的updated 事件中你无法取得你加减以后的值,因为他的结果会是这样的

关于laravel increment 与 decrement 不能触发观察者模式的解决方案

解决方案如下:

    $credit = Credit::findOrFail($id);
        dumpSQL();
        if ($request->type < 0) {
            $credit->update([
                'num' => DB::raw("num - $request->num"),
            ]);
        }

在 updated () 中打印结果如下
关于laravel increment 与 decrement 不能触发观察者模式的解决方案

如有错误请指正

本作品采用《CC 协议》,转载必须注明作者和本文链接
Mr.pan
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。