hnhdigital-os/laravel-model-change-tracking

为 Eloquent ORM 提供了对当前用户与模型变更的跟踪支持

1.0.3 2018-03-10 13:28 UTC

This package is auto-updated.

Last update: 2024-09-22 02:01:40 UTC


README

此包提供了一些特性来跟踪模型变更。

Latest Stable Version Total Downloads Latest Unstable Version License

Build Status StyleCI Test Coverage Issue Count Code Climate

安装

通过 composer

$ composer require hnhdigital-os/laravel-model-change-tracking ~1.0

此包的服务提供程序将从 Laravel 5.5 自动加载。

要启用 Laravel 5.4 之前的版本中的服务提供程序,请编辑 config/app.php

    'providers' => [
        ...
        Bluora\LaravelModelChangeTracking\ServiceProvider::class,
        ...
    ];

状态变更

跟踪模型的状态变更以及变更的用用户,以下状态:createdupdateddeletedrestored

属性变更特性

为模型添加一个 saving 事件以跟踪所有属性值的变更。

用户变更特性

为模型在 createdupdatedarchiveddeleted 时添加事件,以设置当前用户的属性。

用法

用户变更跟踪。

created_byupdated_byarchived_bydeleted_by 属性添加到模型的数据库表中。

namespace App\Models;

use Bluora\LaravelModelChangeTracking\ChangeByUserTrait;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use ChangeByUserTrait;
}

关闭跟踪属性

您可以通过返回 false 来关闭。

public function getCreatedByColumn()
{
    return false;
}

public function getUpdatedByColumn()
{
    return false;
}

public function getArchivedByColumn()
{
    return false;
}

public function getDeletedByColumn()
{
    return false;
}

不同的属性名

您可以在返回值中指定属性名。

public function getCreatedByColumn()
{
    return 'created_by';
}

public function getUpdatedByColumn()
{
    return 'updated_by';
}

public function getArchivedByColumn()
{
    return 'updated_by';
}

public function getDeletedByColumn()
{
    return 'deleted_by';
}

跟踪模型的状态变更

在数据库表中外部跟踪模型状态变更。

namespace App\Models;

use Bluora\LaravelModelChangeTracking\LogStateChangeTrait;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use LogStateChangeTrait;
}

记录每个属性值变更

跟踪属性值变更。

namespace App\Models;

use Bluora\LaravelModelChangeTracking\LogChangeTrait;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use LogChangeTrait;

    protected $do_not_log = [
        'password',
        'remember_token',
    ];
}