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

分享 monkey ⋅ 于 1年前 ⋅ 最后回复由 鹿鹿君 4个月前 ⋅ 2974 阅读

说明

在实际项目中,我们可能需要记录用户某些的行为,如登录、退出、发布文章等,使用 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 对数据进行分类;

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

以上。

本帖已被设为精华帖!
本帖由系统于 1年前 自动加精
回复数量: 5
  • zhuzhichao Lalala Demacian !
    1年前

    好东西,准备在项目中用!

  • awh521 没有程序解决不了的问题,只有自己想不到的方法
    1年前

    一直想要这个,感谢分享

  • uicosp
    1年前

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

  • 鹿鹿君
    4个月前

    感谢感谢

  • 鹿鹿君
    4个月前

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

暂无评论~~
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter