[扩展推荐]Eloquent State Machines —— 模型状态管理

Laravel

Eloquent状态机是由 Andrés Santibáñez 提供的包,它简化了Eloquent模型状态的转换:

这个周末,我开始为 @laravelphp 开发一个新软件包,用于管理 Eloquent 模型的状态机。 非常的有趣并且在这个过程中学到了很多东西。
我刚刚发布了 v1.0.0 版本。感受下吧! 🎉
github.com/asantibanez/laravel-elo...
欢迎大家反馈意见。
—— 来自  Andrés Santibáñez

通过在特定状态机中定义转换逻辑来完成转换状态。这是 SalesOrder 模型中的一个示例:

// '待处理', '已通过', '已拒绝' 或者 '已处理'
$salesOrder->status;
// null, '待处理', '已完成'
$salesOrder->fulfillment;

//
// 过渡状态示例
//

$salesOrder->status()->transitionTo('approved');
$salesOrder->fulfillment()->transitionTo('completed');

// 自定义过渡状态的属性
$salesOrder->status()->transitionTo('approved', [
    'comments' => 'Customer has available credit',
]);

这里有一些例子查看转换历史:

$salesOrder->status()->was('approved');
$salesOrder->status()->timesWas('approved');
$salesOrder->status()->whenWas('approved');
$salesOrder->fulfillment()->snapshowWhen('completed');
$salesOrder->status()->history()->get();

最后,这里有一个在模型中使用这个包的例子:

namespace App\Models;

use App\StateMachines\SalesOrders\StatusStateMachine;
use Asantibanez\LaravelEloquentStateMachines\Traits\HasStateMachines;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class SalesOrder extends Model
{
    use HasFactory;
    use HasStateMachines;

    public $stateMachines = [
        'status' => StatusStateMachine::class,
    ];
}

Andrés 有一个 例子展示了在 Laravel 中如何使用这个包。GitHub 上的源码可以学习更多关于这个包的内容,还有完整的安装说明。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/eloquent-state-...

译文地址:https://learnku.com/laravel/t/53005

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!