直接用 Composer 安装 owen-it/laravel-auditing:composer require owen-it/laravel-auditing;注意包名拼写准确,安装后自动注册服务提供者,需发布迁移并运行 php artisan migrate 创建 audits 表,模型启用审计需 use Auditable trait 且实现 AuditableContract 接口。

直接用 Composer 安装 owen-it/laravel-auditing
它不是 Laravel 官方包,但维护活跃、Laravel 9/10 兼容良好,安装就是一条命令:composer require owen-it/laravel-auditing。注意别拼错包名——owen-it/laravel-auditing 中的 owen-it 是作者 GitHub 组织名,不是 owenit 或 owen,拼错会报 Package not found。
安装后自动注册服务提供者(Laravel 5.5+ 支持自动发现),无需手动加到 config/app.php;但如果你用的是 Laravel 5.4 或禁用了自动发现,得手动在 providers 数组里加一行:OwenIt\Auditing\AuditingServiceProvider::class。
发布迁移文件并运行 migrate
审计日志要存进数据库,必须先生成并执行迁移。执行:php artisan vendor:publish --provider="OwenIt\Auditing\AuditingServiceProvider" --tag="migrations"。这会把 create_audits_table.php 迁移文件复制到 database/migrations/ 目录下。
常见错误:没运行这步就直接 php artisan migrate,结果报错 Base table or view not found: 1146 Table 'xxx.audits' doesn't exist。迁移文件生成后,再跑一次 php artisan migrate 就行。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 如果项目已上线,别直接删库重迁——
audits表可独立存在,不影响主业务表 - 默认迁移使用
bigIncrements,适合高并发场景;如确定数据量极小,可手动改成increments减少索引体积 - 表名固定为
audits,不建议改;若真要改,需同时在config/audit.php里调整table配置项
给模型开启审计功能
不是所有模型都要审计,只在需要记录变更的模型里加 Auditable trait 和接口即可。例如:
use OwenIt\Auditing\Contracts\Auditable as AuditableContract;
use OwenIt\Auditing\Auditable;
class User extends Model implements AuditableContract
{
use Auditable;
}
关键点:
- 必须实现
AuditableContract接口,否则运行时会报Class name must be a valid object or a string类错误 -
Auditabletrait 默认监听created、updated、deleted、restored四个事件;想关掉某个(比如不想记 soft-delete 的deleted),在模型里设:protected $auditInclude = ['name', 'email'];或protected $auditExclude = ['password']; - 如果模型用的是自定义主键(非
id),记得设置:protected $auditInclude = ['your_primary_key'];并确保该字段被包含在审计字段中,否则日志里auditable_id可能为空
审计日志查不到?检查配置和软删除行为
最常遇到的情况是:改了数据,但 audits 表里没新记录。优先排查这三处:
- 模型是否真的用了
Auditabletrait 且实现了接口——漏一个就完全不触发 - 是否启用了软删除(
SoftDeletes)但没在模型里加use SoftDeletes;?此时delete()实际是update操作,而默认审计不监听updated对 soft-deleted 记录的变更,需显式开启:protected $auditInclude = ['deleted_at']; - 配置文件
config/audit.php是否被意外修改?尤其enabled设为false,或implementation指向了错误类——首次发布配置后,Laravel 不会自动覆盖已有文件,改配置得手动确认
审计本身不阻塞主流程,但大量高频更新模型时,每条变更写一次 audits 表可能拖慢响应;如只需关键操作留痕,建议用 $model->auditCustom('user_profile_updated', [...]) 手动触发,比全自动更可控。

















