laravel-versionable
laravel-versionable copied to clipboard
Revert not change data
Revert not work $post->getVersion(3)->revert(); $post->revertToVersion(3);
without comment out when VersionStrategy::DIFF
// if (! empty($this->contents)) { // $this->versionable->setRawAttributes(array_merge($original, $this->contents)); // }
public function revertWithoutSaving(): ?Model
{
$original = $this->versionable->getRawOriginal();
switch ($this->versionable->getVersionStrategy()) {
case VersionStrategy::DIFF:
// v1 + ... + vN
$versionsBeforeThis = $this->previousVersions()->orderOldestFirst()->get();
foreach ($versionsBeforeThis as $version) {
if (! empty($version->contents)) {
$this->versionable->setRawAttributes(array_merge($original, $version->contents));
}
}
break;
case VersionStrategy::SNAPSHOT:
// v1 + vN
/** @var \Overtrue\LaravelVersionable\Version $initVersion */
$initVersion = $this->versionable->versions()->first();
if (! empty($initVersion->contents)) {
$this->versionable->setRawAttributes(array_merge($original, $initVersion->contents));
}
}
// if (! empty($this->contents)) {
// $this->versionable->setRawAttributes(array_merge($original, $this->contents));
// }
return $this->versionable;
}