有時候在觀察者模式中完成一些操作非常方便,比如使用者的積分產生變動就一定要有一個使用者積分記錄。
因為這在任何時候都是必要的,increment 與 decrement 方法是將模型先同步你所要修改的列的值然後執行sql會不觸發觀察者模式。
下面的方法經過測試是可行的,只是在觀察者的updated 事件中你無法取得你加減以後的值,因為他的結果會是這樣的
解決方案如下:
$credit = Credit::findOrFail($id);
dumpSQL();
if ($request->type < 0) {
$credit->update([
'num' => DB::raw("num - $request->num"),
]);
}
在 updated() 中列印結果如下
如有錯誤請指正
本作品採用《CC 協議》,轉載必須註明作者和本文連結