gpt4 book ai didi

database - Laravel 中的有限状态机和持久化

转载 作者:太空狗 更新时间:2023-10-30 01:49:34 25 4
gpt4 key购买 nike

我想知道 Laravel 是否有一些内置的状态机机制?如果没有,使用这个名为 Finite (https://github.com/yohang/Finite) 的优秀库的最佳方式是什么。

这是我所拥有的(用例:工作板):

  • 用户创建报价(初始状态:已创建)
  • 用户预览报价(状态:草稿)
  • 用户发布了报价(最终状态:已发布)

首先,我让我的模型“有状态”:

use Finite\StatefulInterface;
class Offer extends Eloquent implements StatefulInterface {

然后在我的优惠 Controller 的商店操作中:

$stateMachine = new StateMachine();
$stateMachine->addState(new State('created', StateInterface::TYPE_INITIAL));
$stateMachine->addState('draft');
$stateMachine->addState(new State('published', StateInterface::TYPE_FINAL));

$stateMachine->addTransition('preview', 'created', 'draft');
$stateMachine->addTransition('publish', 'draft', 'published');

$stateMachine->setObject($offer);
$stateMachine->initialize();

据我了解,当用户预览优惠时(例如),我应该调用:

$stateMachine->apply('preview').

我的问题是:

如何跟踪应用程序中的所有状态和转换?我是否将状态存储在我的报价模型中?我是否创建额外的表?

最佳答案

请前往此要点:FiniteAuditTrail Trait : 对于您的请求来说,这是一个很好的起点!

感兴趣的 PHP 文件:

关于database - Laravel 中的有限状态机和持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22910570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com