temistocle1998/laravel-model-tracker

一个用于跟踪模型变化的Laravel包,包括旧值、新值以及负责更改的用户

v1.2.2 2024-09-21 12:47 UTC

This package is auto-updated.

Last update: 2024-09-24 16:59:23 UTC


README

这是一个为您的Laravel "Tracker"包提供的示例 README.md

Laravel Model Tracker

Latest Stable Version Total Downloads License

一个轻量级的Laravel包,用于跟踪模型中的更改。自动记录所有更改,包括旧值、新值和负责更改的用户。

功能

  • 自动跟踪任何Eloquent模型中的更改。
  • 存储更新字段的旧值和新值。
  • 记录更改的用户(如果已认证)。
  • 通过简单的特质提供易于集成的功能。
  • 可配置以排除跟踪的字段。
  • 包括一个迁移,用于在model_changes表中存储日志。

要求

  • Laravel 8.x或9.x
  • PHP 7.4或更高版本

安装

  1. 通过Composer安装

    composer require temistocle1998/laravel-model-tracker
  2. 发布配置和迁移文件

    php artisan vendor:publish --tag=tracker-config
    php artisan migrate
  3. TracksChanges特质添加到您的模型中

    在您想要跟踪更改的任何模型中,只需包含TracksChanges特质即可

    use Tracker\Traits\TracksChanges;
    
    class Product extends Model
    {
        use TracksChanges;
    }

配置

该包附带一个可以自定义以满足您需求的配置文件。配置文件位于config/tracker.php

示例配置

return [
    'enabled' => true, // Enable or disable the tracking
    'exclude_fields' => ['password', 'remember_token'], // Fields you don't want to track
];

用法

一旦设置好包,使用TracksChanges特质对模型进行的任何更改都将自动记录。日志存储在model_changes表中。

更改日志示例

当模型更新时,以下日志将在model_changes表中创建

检索模型更改

您可以使用ModelChange模型获取模型更改。

use Tracker\Models\ModelChange;

// Get all changes for a specific model
$changes = ModelChange::where('model_type', 'App\Models\Product')
                      ->where('model_id', $productId)
                      ->get();

// Display the changes
foreach ($changes as $change) {
    echo $change->changes;
}

在视图中显示更改

您还可以在视图中显示更改。

@foreach ($product->changes as $change)
    <p>Field: {{ $change['field'] }} | Old Value: {{ $change['old_value'] }} | New Value: {{ $change['new_value'] }}</p>
@endforeach

贡献

如果您想为此包做出贡献,请随时提交拉取请求。所有贡献都受欢迎!

许可

此包根据MIT许可证授权。有关详细信息,请参阅LICENSE文件。