velitsol/userstamps

此包已被废弃,不再维护。没有建议的替代包。

一个简单的包,用于自动插入和加载模型的用户戳,它为你的模型提供了一种优雅的特质。

v0.1.7 2020-01-20 18:53 UTC

This package is auto-updated.

Last update: 2023-11-21 18:30:37 UTC


README

GitHub issues GitHub forks GitHub stars

一个简单的包,用于加载和插入模型的用户戳

需求

  • 此包需要 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 获取记录时,它也会加载这些用户戳。自动插入将取决于,

  1. 事件 ('创建', '保存', '更新', '删除')
  2. 字段
  3. 表达式
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 许可证 许可。