| Package Data | |
|---|---|
| Maintainer Username: | overtrue |
| Package Create Date: | 2019-05-31 |
| Package Last Update: | 2025-05-21 |
| Home Page: | |
| Language: | PHP |
| License: | MIT |
| Last Refreshed: | 2025-10-19 15:18:15 |
| Package Statistics | |
|---|---|
| Total Downloads: | 225,799 |
| Monthly Downloads: | 11,783 |
| Daily Downloads: | 172 |
| Total Stars: | 571 |
| Total Watchers: | 10 |
| Total Forks: | 48 |
| Total Open Issues: | 11 |
It's a minimalist way to make your model support version history, and it's very simple to roll back to the specified version.
$ composer require overtrue/laravel-versionable -vvv
Optional, you can publish the config file:
$ php artisan vendor:publish --provider="Overtrue\\LaravelVersionable\\ServiceProvider" --tag=config
And if you want to custom the migration of the versions table, you can publish the migration file to your database path:
$ php artisan vendor:publish --provider="Overtrue\\LaravelVersionable\\ServiceProvider" --tag=migration
Then run this command to create a database migration:
$ php artisan migrate
Add Overtrue\LaravelVersionable\Versionable trait to the model and set versionable attributes:
use Overtrue\LaravelVersionable\Versionable;
class Post extends Model
{
use Versionable;
/**
* Versionable attributes
*
* @var array
*/
protected $versionable = ['title', 'content'];
<...>
}
Versions will be created on vensionable model saved.
$post = Post::create(['title' => 'version1', 'content' => 'version1 content']);
$post->update(['title' => 'version2']);
Get all versions
$post->versions;
Get last version
$post->lastVersion;
Reversion a model instance to the specified version:
$post->getVersion(3)->revert();
// or
$post->revertToVersion(3);
$post->removeAllVersions();
You can set the following different version policies through property protected $versionStrategy:
Overtrue\LaravelVersionable::DIFF - Version content will only contain changed attributes (Default Strategy).Overtrue\LaravelVersionable::SNAPSHOT - Version content will contain all versionable attributes values.You can contribute in one of three ways:
The code contribution process is not very formal. You just need to make sure that you follow the PSR-0, PSR-1, and PSR-2 coding guidelines. Any new code contributions must be accompanied by unit tests where applicable.
MIT