首页 > php框架 > Laravel > 正文

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

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

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

在 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() 辅助函数:

Grammarly
Grammarly

Grammarly是一款在线语法纠正和校对工具,伟大的AI辅助写作工具

Grammarly 253
查看详情 Grammarly
// 记录一次用户操作
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)
<div>
{{ $activity->causer ? $activity->causer->name : '系统' }}
在 {{ $activity->created_at }}
执行了: {{ $activity->description }}
<small>详情: {{ json_encode($activity->properties) }}</small>
</div>
@endforeach

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

以上就是laravel怎么使用Spatie的laravel-activitylog记录用户活动_laravel Spatie activitylog用户活动记录方法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号