insenseanalytics/laravel-user-audit-trails

Laravel Eloquent的用户审计跟踪。

v2.0 2020-09-23 14:53 UTC

This package is auto-updated.

Last update: 2024-08-29 04:37:45 UTC


README

tests License Latest Stable Version Total Downloads

此包是为了通过使用Laravel Eloquent ORM来添加用户审计跟踪而创建的。使用此包,您将能够将created_byupdated_bydeleted_by用户ID记录到相应的数据库表中。

基本示例

在您的数据库迁移中添加审计跟踪列,如下所示

$table->usertrails(); // for created_by, updated_by
$table->deletetrails(); // for deleted_by

接下来,在您的模型中,使用HasUserTrailsHasDeleteTrails特性来自动设置审计用户跟踪,如下所示

class Post extends \Illuminate\Database\Eloquent\Model
{
    use \Insense\LaravelUserAuditTrails\HasUserTrails;
    use \Insense\LaravelUserAuditTrails\HasDeleteTrails;
}

就是这样!现在,您可以坐下来观察审计用户跟踪的魔力。当创建新记录时,created_by将更新为创建它的用户ID。当更新记录时,updated_by将更新为更新它的用户ID。当软删除记录时,deleted_by将更新为删除它的用户ID。

要求

快速安装

$ composer require insenseanalytics/laravel-user-audit-trails

服务提供者(可选/在Laravel 5.5+上自动发现)

在您的config/app.php文件中注册提供者。

'providers' => [
    ...,
    Insense\LaravelUserAuditTrails\UserTrailsServiceProvider::class,
]

设置自定义列名

如果您想覆盖默认的审计跟踪名称created_byupdated_bydeleted_by,您可以这样做

在您的数据库迁移中添加审计跟踪列,如下所示

$table->usertrails('your-created-by-column', 'your-updated-by-column');
$table->deletetrails('your-deleted-by-column');

接下来,在您的模型中,覆盖静态属性CREATED_BYUPDATED_BYDELETED_BY。请注意,PHP不允许在同一个类中覆盖静态属性,因此您需要从使用\Insense\LaravelUserAuditTrails\HasUserTrails特性的基类扩展您的模型类,如下所示

首先创建您的基模型类(如果尚未创建)。如果已经创建,只需添加特性。

class BaseModel extends \Illuminate\Database\Eloquent\Model
{
    use \Insense\LaravelUserAuditTrails\HasUserTrails;
    use \Insense\LaravelUserAuditTrails\HasDeleteTrails;
}

接下来,在扩展基模型的模型中覆盖静态属性CREATED_BYUPDATED_BYDELETED_BY,如下所示

class YourModel extends BaseModel
{
    public static $CREATED_BY = 'your-created-by-column';
    public static $UPDATED_BY = 'your-updated-by-column';
    public static $DELETED_BY = 'your-deleted-by-column';
}

省略更新或创建列

如果您希望省略审计跟踪列中的一个,只需在您的数据库迁移中将您想省略的一个设置为null,如下所示

$table->usertrails('created_by', null);

上面的示例省略了更新_by列。您也可以反过来省略updated_by,通过将第一个参数设置为null。

接下来,在扩展基模型的模型中覆盖静态属性CREATED_BYUPDATED_BY,将省略的属性设置为null,如下所示

class YourModel extends BaseModel
{
    public static $CREATED_BY = 'created_by';
    public static $UPDATED_BY = null;
}

贡献

只要它们有测试和关于添加功能/解决问题的简要描述,我们就会接受PR。

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件