insenseanalytics / laravel-user-audit-trails
Laravel Eloquent的用户审计跟踪。
Requires
- illuminate/database: ^5.5|^6.0|^7.0|^8.0
- illuminate/support: ^5.5|^6.0|^7.0|^8.0
Requires (Dev)
- doctrine/dbal: ^2.6
- orchestra/testbench: ^3.5|^4.0|^5.0|^6.0
- phpunit/phpunit: ^6.0|^7.0|8.0|^9.0
This package is auto-updated.
Last update: 2024-08-29 04:37:45 UTC
README
此包是为了通过使用Laravel Eloquent ORM来添加用户审计跟踪而创建的。使用此包,您将能够将created_by
、updated_by
和deleted_by
用户ID记录到相应的数据库表中。
基本示例
在您的数据库迁移中添加审计跟踪列,如下所示
$table->usertrails(); // for created_by, updated_by $table->deletetrails(); // for deleted_by
接下来,在您的模型中,使用HasUserTrails
和HasDeleteTrails
特性来自动设置审计用户跟踪,如下所示
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_by
、updated_by
和deleted_by
,您可以这样做
在您的数据库迁移中添加审计跟踪列,如下所示
$table->usertrails('your-created-by-column', 'your-updated-by-column'); $table->deletetrails('your-deleted-by-column');
接下来,在您的模型中,覆盖静态属性CREATED_BY
、UPDATED_BY
和DELETED_BY
。请注意,PHP不允许在同一个类中覆盖静态属性,因此您需要从使用\Insense\LaravelUserAuditTrails\HasUserTrails
特性的基类扩展您的模型类,如下所示
首先创建您的基模型类(如果尚未创建)。如果已经创建,只需添加特性。
class BaseModel extends \Illuminate\Database\Eloquent\Model { use \Insense\LaravelUserAuditTrails\HasUserTrails; use \Insense\LaravelUserAuditTrails\HasDeleteTrails; }
接下来,在扩展基模型的模型中覆盖静态属性CREATED_BY
、UPDATED_BY
和DELETED_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_BY
和UPDATED_BY
,将省略的属性设置为null,如下所示
class YourModel extends BaseModel { public static $CREATED_BY = 'created_by'; public static $UPDATED_BY = null; }
贡献
只要它们有测试和关于添加功能/解决问题的简要描述,我们就会接受PR。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。