velitsol / userstamps
此包已被废弃,不再维护。没有建议的替代包。
一个简单的包,用于自动插入和加载模型的用户戳,它为你的模型提供了一种优雅的特质。
v0.1.7
2020-01-20 18:53 UTC
Requires
- php: >=5.6.0
- illuminate/support: 5.*
README
一个简单的包,用于加载和插入模型的用户戳
需求
- 此包需要 PHP 5.6+
- 它与 Laravel 5.4 或更高版本兼容(也可能与早期版本兼容)。
安装
步骤 1:通过 Composer 安装
composer require velitsol/userstamps
步骤 2:添加服务提供者
// config/app.php 'providers' => [ '...', VelitSol\Userstamps\UserstampServiceProvider::class ];
使用方法
在您的模型中加载该特质,并见证魔法。
场景 1:为模型加载用户戳
您可以配置此包以自动加载用户戳和您的模型。当用户戳在控制器或其他位置手动设置时,就会发生这种情况。
use VelitSol\Userstamps\UserstampTrait; class Post extends Model { use UserstampTrait; protected $userstamps = [ 'created_by', 'updated_by', 'submitted_by', 'deleted_by' ]; }
然后您可以像这样自动加载这些用户戳,
$posts = Post::withUserstamps()->get();
这将允许您将定义的用户戳作为动态关系在模型中访问
$post->createdByUser; $post->updatedByUser; $post->submittedByUser; $post->deletedByUser;
场景 2:插入和加载模型的用户戳
您可以配置此包以在幕后处理用户戳的插入。当您使用 eloquent 获取记录时,它也会加载这些用户戳。自动插入将取决于,
- 事件 ('创建', '保存', '更新', '删除')
- 字段
- 表达式
use VelitSol\Userstamps\UserstampTrait; class Post extends Model { use UserstampTrait; protected $userstamps = [ // This userstamp should be set when 'creating' event is invoked. 'created_by' => [ 'depends_on_event' => 'creating', ], // This userstamp should be set when 'creating' or 'updating' event is invoked. // This is an example, if a userstamp depends on multiple events 'updated_by' => [ 'depends_on_event' => ['creating', 'updating'], ], 'deleted_by' => [ 'depends_on_event' => 'deleting', ], // This userstamp should be set if "is_archived" is dirty (has some change in value) 'archived_by' => [ 'depends_on_field' => 'is_archived' ], // This userstamp should be set if "updating" event is invoked on this model, // and "is_submitted" is dirty (has some change in value) 'submitted_by'=> [ 'depends_on_event' => 'updating', 'depends_on_field' => 'is_submitted' ], // This userstamp should be set if "updating" event is invoked on this model, // and provided expression evaluates to true 'suspended_by' => [ 'depends_on_event' => 'updating', 'depends_on_expression' => '$api_hits > 100' // $api_hits is a model field i.e $model->api_hits ], ............., .............., ]; }
然后您可以像这样自动加载这些用户戳,
$posts = Post::withUserstamps()->get();
这将允许您将定义的用户戳作为动态关系在模型中访问
$post->createdByUser; $post->updatedByUser; $post->archivedByUser; $post->submittedByUser; $post->suspendedByUser;
许可证
此开源软件根据 MIT 许可证 许可。