jvizcaya / loggable
提供函数以记录应用程序模型中的用户活动。
Requires
- php: ^7.1.3|^8.0
README
Loggable 是一个用于 Laravel 5.7+ 的包,它增加了记录应用程序数据库中表的用户活动功能,灵感来源于 haruncpi/laravel-user-activity 包。
Loggable 在用户对使用 Trait 的 created、updated 和 deleted 事件执行操作时,会在 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