bluora/laravel-model-change-tracking

该包已被废弃且不再维护。作者建议使用hnhdigital-os/laravel-model-change-tracking包。

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

1.0.3 2018-03-10 13:28 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:56:12 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',
    ];
}