laravel-enso / versioning
Prevents update conflicts using the optimistic lock pattern in Laravel
Installs: 16 712
Dependents: 2
Suggesters: 0
Security: 0
Stars: 35
Watchers: 7
Forks: 9
Open Issues: 1
Requires
- php: >=8.0
- laravel/framework: ^8.0|^9.0
This package is auto-updated.
Last update: 2024-09-25 16:45:39 UTC
README
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
Installation
- install the package
composer require laravel-enso/versioning
- run the migrations
- use the
Versionable
trait 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).
Features
- the package creates a
versionings
table where it holds versions for all the versionable models - by using the
Versionable
trait on a model, versioning is handled automatically - by default the trait appends a
version
attribute 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 aforceDelete
- throws a
ConflictHttpException
if the version does not match on update - tests are included with the package
Configuration & Usage
Be sure to check out the full documentation for this package available at docs.laravel-enso.com
Contributions
are welcome. Pull requests are great, but issues are good too.
License
This package is released under the MIT license.