Versioning
Versioning entry models is as easy as enabling it on your model using the $versionable
property:
protected $versionable = true;
Saving revisions and what was changed will occur automatically now!
Temporarily Disabling Versioning
Should you need to temporarily disable versioning you can use the helper methods:
$entry->enableVersioning();
$entry->disableVersioning();
if ($entry->versioningDisabled()) {
// Versioning is disabled.
}
Omitting Attributes From Versioning
To disable tracking of attributes from versioning you can use the nonVersionedAttributes
property:
protected $nonVersionedAttributes = [
'remember_token',
'reset_token',
'password',
];
Accessing Versions
Versions can be fetched off the model instance you want to get versions for:
$current = $entry->getCurrentVersion();
$previous = $entry->getPreviousVersion();
foreach ($entry->getVersions() as $version) {
$version->getVersion(); // The version ID
}
Accessing Model Data/Snapshots
You can grab the snapshot instance of the old model off the version instance using the model
property:
$model = $version->getModel(); // Model Instance
You can grab only the data that was changed at that point with getData
:
$changes = $version->getData(); // array