Laravel-Auditing无报错但不生成审计记录问题求助
故障原因
- 配置文件driver参数设置错误。当前配置的driver为
session,但你需要将审计数据写入数据库,必须指定driver为eloquent,你的配置文件中仅配置了eloquent驱动的相关参数,无session驱动的对应配置,自然不会生成数据库审计记录。 - 控制器使用了批量更新语法。
Setting::where()->update()属于Laravel查询构造器的批量更新操作,不会触发模型的updated事件,而laravel-auditing扩展依赖模型事件触发审计日志写入,即便driver配置修正,用该写法也不会生成审计记录。
修复步骤
修改
config/audit.php中的driver参数
将'driver' => 'session',改为'driver' => 'eloquent',,修改完成后执行php artisan config:clear清空配置缓存。调整控制器更新逻辑,先查询模型实例再调用update方法
public function saveSetting(Request $request) { $setting = Setting::find(1); $result = $setting->update([ 'expansion_id' => $request['expansion_id'], 'season' => $request['season'], 'advertiser_app' => $request['advertiser_app'], 'pvp_app' => $request['pvp_app'], 'raid_app' => $request['raid_app'], 'version' => $request['version'] ]); if ($result) { toastr()->success('Settings successfully updated.'); return redirect()->back(); } toastr()->error('Something went wrong!'); return redirect()->back(); }
- 可选排查项:如果修复后仍不生效,检查
.env文件中是否存在AUDITING_ENABLED=false配置,确认该参数值为true,或直接删除该配置项走默认生效逻辑即可。
内容的提问来源于stack exchange,提问作者Alireza Behnamnik
相关产品推荐
相关产品推荐

