sucohi / back-then
一个用于管理数据库修订版本的 Laravel 扩展包。
1.0.3
2017-05-23 20:09 UTC
Requires
- laravel/framework: ~5.0
This package is not auto-updated.
Last update: 2024-09-15 03:44:39 UTC
README
一个用于管理数据库修订版本的 Laravel 扩展包。(此包适用于 Laravel 5+)
- 注意:此包受到 VentureCraft/revisionable 的启发。感谢,VentureCraft!
安装
执行以下 composer 命令。
composer require sukohi/back-then:1.*
然后在你的 config/app.php 中设置 BackThenServiceProvider。
Sukohi\BackThen\BackThenServiceProvider::class,
准备
为此包创建一个表,执行以下命令。
php artisan vendor:publish --provider="Sukohi\BackThen\BackThenServiceProvider"
和
php artisan migrate
将 BackThenTrait
添加到你的模型中,如下所示。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Sukohi\BackThen\BackThenTrait;
class Product extends Model
{
use BackThenTrait;
这样就完成了。
现在,当你创建、更新或删除记录时,此包将自动保存修订记录。
用法
你可以像平常一样保存和删除记录。
$product = new \App\Product();
$product->name = 'xxxxxxx';
$product->save(); // Revision record will be saved.
$product = \App\Product::find(1);
$product->name = 'yyyyyyy';
$product->save(); // Revision record will be saved.
$product->delete(); // Revision record will be saved.
保存用户 ID
你可以通过 revision_user_id
保存/删除的用户 ID。
$product = \App\Product::find(1);
$product->revision_user_id = 1; // User ID you want to save.
$product->save();
检索当前修订 ID 和唯一 ID
echo $product->revision_id;
echo $product->revision_unique_id;
- 你可以通过修订 ID 或唯一 ID 来更改你想要的修订版本。
更改修订
通过 changeRevisionById
$revision_id = 1;
if($product->hasRevisionId($revision_id)) {
$product->changeRevisionById($revision_id); // This has old values.
}
或通过 changeRevision
$unique_id = '5a906ea1934196bc065f1b22eafd90c9';
if($product->hasRevisionUniqueId($unique_id)) {
$product->changeRevision($unique_id); // This has old values.
}
注意:一旦你调用了 changeRevisionById()
或 changeRevision()
,模型将有旧值。
这意味着如果你保存它,当然,最新的值将被替换为旧值。
所以如果你需要同时保存,不要忘记调用 clearRevision()
。
返回最新修订
$product->clearRevision();
修订列
如果你希望此包保存特定的修订记录。
在你的模型中设置列名,如下所示。
protected $revisions = ['column_name'];
或
protected $ignore_revisions = ['column_name'];
检索修订数据
$histories = $product->revisionHistory; // All revisions
或
$revision = $product->getRevisionById(1); // A specific revision
$revision = $product->getRevision('5a906ea1934196bc065f1b22eafd90c9');// A specific revision
许可协议
此包根据 MIT 许可证授权。
版权所有 2017 Sukohi Kuhoh