筆記一下,
在使用 spatie/laravel-settings 時,遇到了 spatie/laravel-activitylog 卻未產出LOG紀錄的問題
之前在看官方文件時,
就有看過 當使用 mass update 並不會觸發到 model 事件中 saving, saved, updating, and updated,
所以 Activity Log 在此時會失效。
解決方法
spatie/laravel-settings 在config 中,有一個配置 type 引用 DatabaseSettingsRepository 的檔案,此時我們去繼承覆寫原有更新條件即可。
原本的 getBuilder 後的 update 是使用 mass update 直接更動DB,未引出 model。
理論上依照套件的邏輯,我們使用 first() 去取得 model,再進行動作即可!
optional($this->getBuilder() ->where('group', $group) ->where('name', $name) ->first())->update([ 'payload' => json_encode($value), ]);