traknpay / laravel-eloquent-approval
Laravel Eloquent 模型审批包
1.4
2024-02-01 12:14 UTC
Requires
- php: ^7.0|^8.0
- illuminate/database: ^5.6.0|^6.0
- illuminate/support: ^5.6.0|^6.0
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' 表中进行审批。例如,在此函数中,您可以检查用户是否有审批权限。
##审批事件
以下模型事件在将数据保存到“审批”表之前和之后被触发。
sendingForApproval
- 在将数据保存到“审批”表之前。sentForApproval
- 在将数据保存到“审批”表之后。
灵感来源
我从 mtvs/eloquent-approval 包中获得了灵感。尽管如此,我还是为我的项目目的编写了自己的包,我从中学到了如何编写自己的包。