關於 Laravel increment 與 decrement 不能觸發觀察者模式的解決方案

pan_zoe發表於2020-05-20
    有時候在觀察者模式中完成一些操作非常方便,比如使用者的積分產生變動就一定要有一個使用者積分記錄。

    因為這在任何時候都是必要的,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

相關文章