Prevents update conflicts using the optimistic lock pattern in Laravel.
This package can work independently of the Enso ecosystem.
For live examples and demos, you may visit laravel-enso.com
Comes pre-installed in Enso.
To install outside of Enso:
- install the package
composer require laravel-enso/versioning
- run the migrations
- use the
Versionabletrait on the models you want versioning on.
By default, the version value is kept in a 'version' attribute, but this can be customized (see below).
- the package creates a
versioningstable where it holds versions for all the versionable models
- by using the
Versionabletrait on a model, versioning is handled automatically
- by default the trait appends a
versionattribute after the model is retrieved, used for tracking versions and expects the same attribute to be present on the model when the update is called
- the default versioning attribute can be customized by using
protected $versioningAttribute = 'customVersionAttribte'on the model
- the trait can be used on models that already have records in the database, the versioning starts with the first retrieval of those models
- when a versionable model is deleted, its versioning is deleted also. If the model uses
SoftDeletes, the versioning is not deleted, unless doing a
- throws a
ConflictHttpExceptionif the version does not match on update
- tests are included with the package
are welcome. Pull requests are great, but issues are good too.
This package is released under the MIT license.