信息发布→ 登录 注册 退出

laravel怎么使用Spatie的laravel-activitylog记录用户活动_laravel Spatie activitylog用户活动记录方法

发布时间:2025-11-17

点击量:
安装 laravel-activitylog 包并发布配置文件,运行迁移创建 activity_log 表;2. 在模型中使用 LogsActivity trait 指定需记录的字段;3. 可通过 activity() 手动记录用户行为;4. 使用 Activity 模型查询操作记录;5. 在 Blade 模板中展示日志信息。该包可实现模型变更自动追踪与自定义操作记录,适用于系统审计。

在 Laravel 项目中,Spatie 的 laravel-activitylog 是一个非常流行的包,用于记录模型的增删改操作或自定义用户行为。它能自动跟踪 Eloquent 模型的变化,并将操作记录存储到数据库中,便于后续审计和监控。

1. 安装 laravel-activitylog 包

使用 Composer 安装 Spatie 的 activitylog 包:

composer require spatie/laravel-activitylog

安装完成后,可选择性地发布迁移文件和配置文件:

php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="migrations" php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="config"

然后运行迁移,创建 activity_log 表:

php artisan migrate

2. 配置需要记录的模型

在需要记录操作的 Eloquent 模型中使用 LogsActivity trait,并指定要记录的字段。

例如,在 User 模型中记录用户的更新操作:

use Spatie\Activitylog\Traits\LogsActivity;

class User extends Authenticatable
{
use LogsActivity;

// 指定记录的属性
protected $fillable = ['name', 'email', 'password'];

// 记录哪些字段的变更
protected static $logAttributes = ['name', 'email'];

// 设置日志名称(可选)
protected static $logName = 'user';

// 是否记录属性的旧值和新值
protected static $logAttributesToIgnore = ['updated_at'];

// 是否在无变化时也记录
protected static $submitEmptyLogs = false;
}

3. 手动记录用户活动

除了自动记录模型变更,你还可以手动记录用户行为,比如登录、退出、访问页面等。

在控制器中使用 activity() 辅助函数:

// 记录一次用户操作
activity()
->causedBy(auth()->user()) // 操作人
->performedOn($someModel) // 操作对象(可选)
->withProperties(['action' => 'export_data']) // 附加信息
->log('用户导出了报表');

也可以不绑定模型:

activity()->log('用户登录系统');

4. 查询活动记录

你可以通过 Activity model 查询所有记录:

use Spatie\Activitylog\Models\Activity;

$activities = Activity::all();

按用户筛选:

$activities = auth()->user()->activities;

按日志类型筛选:

$activities = Activity::forSubject($post)->get(); // 获取某篇文章的操作记录

5. 在 Blade 中展示操作记录

将 $activities 传入视图后,可以这样展示:

@foreach($activities as $activity)

{{ $activity->causer ? $activity->causer->name : '系统' }}
在 {{ $activity->created_at }}
执行了: {{ $activity->description }}
详情: {{ json_encode($activity->properties) }}

@endforeach

基本上就这些。配置好之后,大部分模型操作会自动记录,关键操作也可以手动补充。这个包灵活且稳定,适合用于后台管理系统做操作审计。

标签:# protected  # 它能  # 可通过  # 并将  # 你还  # 适用于  # 管理系统  # 你可以  # 可选  # 自定义  # 数据库  # 对象  # 并发  # laravel  # class  # require  # foreach  # Static  # 配置文件  # ai  # composer  # json  # js  # word  # php  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!