Download the PHP package aw-studio/laravel-states without Composer
On this page you can find all versions of the php package aw-studio/laravel-states. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package laravel-states
Laravel States
A package to make use of the finite state pattern in eloquent Models.
The package stores all states in a database table, so all states changes and the corresponding times can be traced. Since states are mapped via a relation, no additional migrations need to be created when a new state is needed for a model.
A Recommendation
Use states wherever possible! A state can be used instead of booleans like active
or timestamps like declined_at
or deleted_at
:
This way you also know when the change to active has taken place. Also your app becomes more scalable, you can simply add an additional state if needed.
Table Of Contents
- Setup
- Basics
- Usage
- Receive The Current State
- Execute Transitions
- Eager Loading
- Query Methods
- Observer Events
Setup
-
Install the package via composer:
-
Publish the required assets:
- Run The Migrations
Basics
-
Create A State:
-
Create the transitions class:
-
Define the allowed transitions:
- Setup your Model:
Usage
Receive The Current State
Determine if the current state is a given state:
Determine if the current state is any of a the given states:
Determine if the state has been the given state at any time:
Execute Transitions
Execute a state transition:
Prevent throwing an exception when the given transition is not allowed for the current state by setting fail to false
:
Store additional information about the reason of a transition.
Determine wether the transition is allowed for the current state:
Lock the current state for update at the start of a transaction so the state can not be modified by simultansiously requests until the transaction is finished:
Eager Loading
Reload the current state:
Eager load the current state:
Query Methods
Filter models that have or dont have a current state:
Receive state changes:
Observer Events
Listen to state changes or transitions in your model observer: