wearesweet/laravel-revisonable

将 HasRevisions 特性应用于任何模型,以便能够:查看变更历史、回滚到模型的前版本,并在将数据持久化到数据库之前轻松管理变更。

dev-master 2020-07-29 09:13 UTC

This package is auto-updated.

Last update: 2024-09-29 05:48:52 UTC


README

Latest Stable Version MIT Licensed GitHub Tests Action Status Quality Score Total Downloads

将 HasRevisions 特性应用于任何模型,以便能够:查看变更历史、回滚到模型的前版本,并在将数据持久化到数据库之前轻松管理变更。

关于We Are Sweet

We Are Sweet 是一家小型但强大的wb代理机构,为各种客户提供设计、开发和咨询服务。

查看我们

安装和用法

此包需要 PHP 7.6 和 Laravel 6 或更高版本。

运行

$ composer require wearesweet/laravel-revisionable

HasRevisions 特性

将 HasRevisions 特性添加到您的模型中。

class User {
    use WeAreSweet\LaravelRevisionable\Traits\HasRevisions;
}

监听特定属性

覆盖 revisionableAttributes 以返回您希望允许修订的属性数组。

如果与 persistRevisions 一起使用 revisionableAttributes,则数组中的属性将作为修订存储,稍后可以持久化(批准),而数组中不存在的其他属性将立即持久化。

class User {
    use WeAreSweet\LaravelRevisionable\Traits\HasRevisions;
    
    public function revisionableAttributes()
    {
        return 'name';
    }
}

防止未经批准将模型数据持久化到数据库

您可以让模型不直接保存到模型,而是将数据保存到修订中,稍后可以应用于模型。

这对于存储模型的草稿状态或进行审核和批准变更很有用。

为此,将 persistRevisions 方法添加到您的类中,并让它返回 false。

class User {
    use WeAreSweet\LaravelRevisionable\Traits\HasRevisions;
    
    public function persistRevisions()
    {
        return false;
    }
}

查看所有模型的修订历史

App\User::first()->revisions;

查看待定的模型修订

App\User::first()->revisions()->pending()->get();

批准修订

App\User::first()->revisions->first()->approve();

查看合并的待定修订数据

App\User::first()->pendingRevisions();

示例输入/输出

输入
{
  "user":{
    "revisions": [
      {
        "date": "2020",
        "data": {"name": "Ben"}
      },
      {
        "date": "2010",
        "data": {"name": "Neb", "age":  23}
      }
    ]
  }
}
输出
{
  "name": "Ben",
  "age": 23
}

批准所有模型的修订

App\User::first()->approveAllRevisions();

测试

使用以下命令运行测试

composer test

变更日志

请参阅 CHANGELOG 了解最近的变化。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 developers@wearesweet.co.uk 而不是使用问题跟踪器。

致谢

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。