traknpay/laravel-eloquent-approval

Laravel Eloquent 模型审批包

1.4 2024-02-01 12:14 UTC

This package is not auto-updated.

Last update: 2024-09-26 15:33:14 UTC


README

Laravel Eloquent 模型的审批流程。

它是如何工作的?

新的实体以“待审批”的状态创建在“审批”表中,然后可以变为“已批准”或“已拒绝”。

安装

$ composer require traknpay/laravel-eloquent-approval

版本兼容性

设置

注册服务提供者

默认情况下,服务提供者会自动通过 Laravel 包发现进行注册,否则您需要在您的 config\app.php 中注册它。

TraknPay\EloquentApproval\ApprovalServiceProvider::class

运行以下命令以迁移“审批”表:

php artisan vendor:publish --provider='TraknPay\EloquentApproval\ApprovalServiceProvider'

php artisan migrate

模型

ApprovalTrait 特性添加到模型中,并按需覆盖 isApprover() 函数。

use Illuminate\Database\Eloquent\Model;
use TraknPay\EloquentApproval\ApprovalTrait;

class Entity extends Model
{
    use ApprovalTrait;
    
    public static function isApprover(): bool
    {
        return true;
    }
}

默认情况下,isApprover() 为 true,如果您使用此特性,则不会将新实体放入 approval 表中。您可以根据需要覆盖此功能。如果 isApprover() 函数返回 false,则实体将添加到 approval 表中,并将交易标记为 false。因此,如果 'isApprover()' 返回 false,则模型将不会持久化到数据库,而是添加到 'approval' 表中进行审批。例如,在此函数中,您可以检查用户是否有审批权限。

##审批事件

以下模型事件在将数据保存到“审批”表之前和之后被触发。

  1. sendingForApproval - 在将数据保存到“审批”表之前。
  2. sentForApproval - 在将数据保存到“审批”表之后。

灵感来源

我从 mtvs/eloquent-approval 包中获得了灵感。尽管如此,我还是为我的项目目的编写了自己的包,我从中学到了如何编写自己的包。