You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Laravel Auditing的old_values和new_values添加额外属性

在Laravel 6.x + Laravel Auditing 12.x中为audits表的new_values/old_values添加额外字段

以下是两种可行的实现方案,按需选择:

方案一:单个可审计模型内修改(适用于单模型需求)

在需要审计的模型(比如Car模型)中,重写getAuditData方法——该方法负责生成审计所需的新旧数据,你可以在这里注入额外字段:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use OwenIt\Auditing\Contracts\Auditable;

class Car extends Model implements Auditable
{
    use \OwenIt\Auditing\Auditable;

    // 模型其他代码...

    protected function getAuditData(): array
    {
        // 先调用父类方法获取原始审计数据
        $auditData = parent::getAuditData();

        // 给new_values添加额外字段,值可动态获取(比如模型属性、请求参数等)
        $auditData['new_values']['extra_field'] = 'value';
        
        // 若需给old_values也添加字段,按需取消注释并调整逻辑
        // $auditData['old_values']['extra_field'] = $this->getOriginal('extra_field');

        return $auditData;
    }
}

方案二:全局事件监听(适用于所有审计模型都需添加的场景)

通过监听Laravel Auditing的Auditing事件,全局修改所有审计记录的新旧数据:

  1. 创建事件监听器
php artisan make:listener AddExtraFieldToAudit
  1. 编写监听器逻辑
    打开生成的app/Listeners/AddExtraFieldToAudit.php,修改handle方法:
<?php

namespace App\Listeners;

use OwenIt\Auditing\Events\Auditing;

class AddExtraFieldToAudit
{
    public function handle(Auditing $event)
    {
        // 给当前审计记录的new_values添加字段
        $event->audit->new_values['extra_field'] = 'value';
        
        // 如需修改old_values,按需添加
        // $event->audit->old_values['extra_field'] = $event->model->getOriginal('extra_field');
    }
}
  1. 注册事件
    在app/Providers/EventServiceProvider.php的$listen数组中添加事件与监听器的关联:
protected $listen = [
    // 其他事件...
    \OwenIt\Auditing\Events\Auditing::class => [
        \App\Listeners\AddExtraFieldToAudit::class,
    ],
];

注意事项

  • extra_field的值可根据业务需求动态生成,比如从模型属性、当前请求参数、登录用户信息等获取,例如$event->model->custom_field或auth()->user()->id。
  • 确保字段名和值符合业务逻辑,避免破坏原有审计数据结构。

内容的提问来源于stack exchange,提问作者LaszloP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:40:29