jvizcaya/loggable

提供函数以记录应用程序模型中的用户活动。

安装: 99

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放性问题: 0

类型:trait

v0.9.8 2022-03-17 21:30 UTC

This package is auto-updated.

Last update: 2024-09-18 02:49:08 UTC


README

Loggable 是一个用于 Laravel 5.7+ 的包,它增加了记录应用程序数据库中表的用户活动功能,灵感来源于 haruncpi/laravel-user-activity 包。

Loggable 在用户对使用 Traitcreatedupdateddeleted 事件执行操作时,会在 logs 表中保存记录。

安装

composer require jvizcaya/loggable

如果我们想更改此包在数据库中使用的表名以及其他选项,请发布配置文件。

php artisan vendor:publish --provider="Jvizcaya\Loggable\LoggableServiceProvider"

运行迁移以在数据库中导出 logs 表。

php artisan migrate

使用模式

将 trait Jvizcaya\Loggable\Loggable 添加到我们想要保存用户活动日志的表模型中。

namespace App;

use Illuminate\Database\Eloquent\Model;
use Jvizcaya\Loggable\Loggable;

class Post extends Model
{
    use Loggable;

}

这样就可以了,在前面的例子中,每次用户在 Post 模型表中保存、更新或删除时,都会在 logs 表中创建记录。

检索模型日志

此包使用 Laravel 的 一对多多态关系 约定构建,并且 trait Jvizcaya\Loggable\Loggable 具有模型关系定义。

加载文章日志

use App\Models\Post;

$logs = Post::find(1)->logs;

懒加载/预加载

use App\Models\Post;

$posts = Post::with('logs')->get();

作用域 lastLogs($limit = 10, $loadUser = true, $userColumns = 'id,name')

我们可以选择性地使用 lastLogs 作用域来加载模型最后日志。该函数接受第一个参数为最大结果数。

Post::lastLogs(10)->get();

默认情况下,此函数加载与每个日志关联的用户数据。如果我们想选择用户表的列,可以将列名以逗号(,)分隔的字符串作为第三个参数传递。

Post::lastLogs(10, true, 'id,name,email,status')->get();

要禁用用户数据的加载,将第二个参数作为布尔值 false 传递。

Post::lastLogs(20, false)->get();

日志模型数据

默认情况下,模型数据将在 delete 操作的 payload 对象的 data 属性中保存。您可以通过将配置文件中的 log_data 变量设置为 false 来禁用此功能。

日志删除(控制台命令)

要删除活动日志数据,我们可以使用可用的控制台命令 loggable:delete,该命令将删除日志gable.php配置文件中定义的天数之前的日志(默认为 30 天)。

php artisan loggable:delete

可选地,我们可以通过命令参数传递天数值。

php artisan loggable:delete 5

将控制台命令 loggable:delete 添加到 任务调度 中以自动运行命令。

注意

此包使用模型文件 Jvizcaya\Loggable\Models\Log

许可证

MIT © Jorge Vizcaya | jorgevizcayaa@gmail.com