spatie / laravel-model-states
Eloquent 模型的状态支持
2.7.1
2024-03-07 07:05 UTC
Requires
- php: ^7.4|^8.0
- ext-json: *
- facade/ignition-contracts: ^1.0
- illuminate/contracts: ^8.73 | ^9.0 | ^10.0 | ^11.0
- illuminate/database: ^8.73 | ^9.0 | ^10.0 | ^11.0
- illuminate/support: ^8.73 | ^9.0 | ^10.0 | ^11.0
- spatie/laravel-package-tools: ^1.9
Requires (Dev)
- orchestra/testbench: ^6.23 | ^7.0 | ^8.0 | ^9.0
- pestphp/pest: ^1.22|^2.0
- phpunit/phpunit: ^9.4|^10.0
- symfony/var-dumper: ^5.3 | ^6.0 | ^7.0
- dev-main
- v2.x-dev
- 2.7.1
- 2.7.0
- 2.6.2
- 2.6.1
- 2.6.0
- 2.5.0
- 2.4.6
- 2.4.5
- 2.4.4
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.0
- 2.2.0
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.2
- 2.0.1
- 2.0.0
- v1.x-dev
- 1.9.1
- 1.9.0
- 1.8.0
- 1.7.0
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.1
- 1.5.0
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.1
- 1.0.0
- 0.1.0
- dev-revert-106-patch5
- dev-add-column-name-to-scope
This package is auto-updated.
Last update: 2024-08-31 10:55:22 UTC
README
如果您打算使用此包,建议您熟悉这两种模式。
为了让您了解如何使用此包,让我们看看一个快速示例。
想象一个名为 Payment
的模型,它有三个可能的状态:Pending
、Paid
和 Failed
。此包允许您将每个状态表示为一个单独的类,在后台处理状态序列化到数据库,并允许轻松进行状态转换。
为了简化示例,让我们假设根据状态,支付的颜色应该不同。
以下是 Payment
模型的样子
use Spatie\ModelStates\HasStates; class Payment extends Model { use HasStates; protected $casts = [ 'state' => PaymentState::class, ]; }
这是抽象的 PaymentState
类的样子
use Spatie\ModelStates\State; use Spatie\ModelStates\StateConfig; abstract class PaymentState extends State { abstract public function color(): string; public static function config(): StateConfig { return parent::config() ->default(Pending::class) ->allowTransition(Pending::class, Paid::class) ->allowTransition(Pending::class, Failed::class) ; } }
以下是某个状态(例如 Paid
状态)的具体实现
class Paid extends PaymentState { public function color(): string { return 'green'; } }
以下是它的使用方式
$payment = Payment::find(1); $payment->state->transitionTo(Paid::class); echo $payment->state->color();
支持我们
我们投入了大量资源来创建一流的开源包。您可以通过购买我们的付费产品之一来支持我们。
我们非常感谢您从家乡寄给我们明信片,并提到您正在使用我们的哪个包。您可以在我们的联系页面找到我们的地址。我们将所有收到的明信片发布在我们的虚拟明信片墙上。
安装
您可以通过 composer 安装此包
composer require spatie/laravel-model-states
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Spatie\ModelStates\ModelStatesServiceProvider" --tag="model-states-config"
这是已发布配置文件的内容
return [ /* * The fully qualified class name of the default transition. */ 'default_transition' => Spatie\ModelStates\DefaultTransition::class, ];
用法
请参阅文档了解如何使用此包。
测试
composer test
更新日志
请参阅更新日志了解最近更改了什么。
贡献
请参阅贡献指南了解详细信息。
安全
如果您发现有关安全性的错误,请通过[email protected]发送邮件,而不是使用问题跟踪器。
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅许可证文件。