数据库 – Laravel中的有限状态机和持久性

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

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

>用户创建要约(初始状态:已创建)
>用户预览优惠(州:草稿)
>用户发布了报价(最终状态:已发布)

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

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

然后在我的商品控制器的商店行动中:

$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感兴趣的文件:

> MyStatefulModel.php
> MyStatefulModelStateTransition.php
> Usage.php

转载注明原文:数据库 – Laravel中的有限状态机和持久性 - 代码日志