【扩展推荐】Laravel-activitylog 记录用户行为扩展包

分享 monkey ⋅ 于 1年前 ⋅ 最后回复由 鹿鹿君 3周前 ⋅ 3981 阅读

说明

在实际项目中,我们可能需要记录用户某些的行为,如登录、退出、发布文章等,使用 spatie/laravel-activitylog 扩展包可以非常方便快捷的完成此逻辑。

1. 安装

1). 使用 composer 安装:

// L5.1 运行:
composer require spatie/laravel-activitylog:1.3.1

// L5.1 之后的版本运行:
composer require spatie/laravel-activitylog

2). 修改 config/app 文件,在 providers 数组内追加如下内容:

'providers' => [
    ...
    Spatie\Activitylog\ActivitylogServiceProvider::class,
],

3). 生成数据表和配置文件

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

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

生成的配置文件保持默认设置即可,一般项目都能通用。

2. 基础用法

1). 直接记录当前登录用户的行为

activity()->log('登录成功');
activity()->log('发帖成功');

2). 记录某个指定用户的行为

$user = User::find(31);
activity()->causedBy($user)->log('登录成功');
activity()->causedBy($user)->log('发帖成功');

我们看一下数据表,即可发现对应的数据已经录入。

file

3). 获取某个用户的记录

此扩展包是以 Eloquent 的方式数据查询操作,下面是例子:

use Spatie\Activitylog\Models\Activity;

...

// 使用 Eloquent 的方式进行查询
$data = Activity::where('causer_id', $user_id)->get();

3. 更多用法

上文的「基础用法」已经能满足大部分的项目需求。除了上文介绍的基础用法,此拓展包还有以下高级用法:

  1. 定期清理过期数据;
  2. 通过 model 的事件驱动自动记录数据;
  3. 可通过 properties 记录自定义数据;
  4. 可以查询记录用户的 changelog;
  5. 可通过 log_name 对数据进行分类;

这些用法大家可以查阅 官方文档 自行阅读,在这里不做过多描述。

以上。

本文章首发在 Laravel China 社区
本帖已被设为精华帖!
本帖由系统于 1年前 自动加精
回复数量: 5
  • 好东西,准备在项目中用!

    1年前
  • 一直想要这个,感谢分享

    1年前
  • 试了一下,发现 log_namedescription 都是 varchar 类型,这样数据库查询时效率会不会很低?感觉可以改成 int,然后再配置文件里面写常量做映射。

    1年前
  • 感谢感谢

    10个月前
  • 如果有需要记录客户端IP字段,在迁移文件添加了ip字段,有没有自带属性将IP写入数据表

    10个月前
您需要登陆以后才能留下评论!

Composer 中国全量镜像

Top 250 扩展包

Lumen 中文文档

Laravel 速查表

Laravel 中文文档

Laravel 项目开发规范

Laravel 开发环境部署

Composer 中文文档

Elasticsearch-PHP 中文文档

Lumen 中文文档

GraphQL PHP 中文文档

社区文档撰写指南

TDD 构建 Laravel 论坛笔记

PHP PSR 标准规范

PHP 设计模式全集

Dingo API 中文文档