calamandrei-lorenzo/laravel-versionable
Composer 安装命令:
composer require calamandrei-lorenzo/laravel-versionable
包简介
Make Laravel model versionable.
README 文档
README
Forked from overtrue/laravel-versionable
⏱️ Make Laravel model versionable.
It's a minimalist way to make your model support version history, and it's very simple to roll back to the specified version.
Requirement
- PHP >= 7.4
- laravel/framework >= 5.8|6.0|7.0
Features
- Keep the specified number of versions.
- Whitelist and blacklist for versionable attributes.
- Easily roll back to the specified version.
- Record only changed attributes.
- Easy to customize.
Installing
$ composer require overtrue/laravel-versionable -vvv
Optional, you can publish the config file:
$ php artisan vendor:publish --provider="CalamandreiLorenzo\\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="CalamandreiLorenzo\\LaravelVersionable\\ServiceProvider" --tag=migrations
Then run this command to create a database migration:
$ php artisan migrate
Usage
Add CalamandreiLorenzo\LaravelVersionable\Versionable trait to the model and set versionable attributes:
use CalamandreiLorenzo\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 versions
Get all versions
$post->versions;
Get last version
$post->lastVersion;
Reversion
Reversion a model instance to the specified version:
$post->getVersion('uuid-...')->revert(); $post->getVersionByVersionNumber('uuid-...')->revert(); // or $post->revertToVersion('uuid-...'); $post->revertToVersionNumber(3);
Remove versions
// soft delete $post->removeVersion($versionId = 1); $post->removeVersions($versionIds = [1, 2, 3]); $post->removeAllVersions(); // force delete $post->forceRemoveVersion($versionId = 1); $post->forceRemoveVersions($versionIds = [1, 2, 3]); $post->forceRemoveAllVersions();
Restore deleted version by id
$post->restoreThrashedVersion($id);
Temporarily disable versioning
// create Post::withoutVersion(function () use (&$post) { Post::create(['title' => 'version1', 'content' => 'version1 content']); }); // update Post::withoutVersion(function () use ($post) { $post->update(['title' => 'updated']); });
Custom Version Store strategy
You can set the following different version policies through property protected $versionStrategy:
CalamandreiLorenzo\LaravelVersionable::DIFF- Version content will only contain changed attributes (Default Strategy).CalamandreiLorenzo\LaravelVersionable::SNAPSHOT- Version content will contain all versionable attributes values.
Contributing
You can contribute in one of three ways:
- File bug reports using the issue tracker.
- Answer questions or fix bugs on the issue tracker.
- Contribute new features or update the wiki.
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.
License
MIT
calamandrei-lorenzo/laravel-versionable 适用场景与选型建议
calamandrei-lorenzo/laravel-versionable 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2020 年 07 月 17 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 calamandrei-lorenzo/laravel-versionable 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 calamandrei-lorenzo/laravel-versionable 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 8
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-07-17