laravel-enso/versioning

使用 Laravel 中的乐观锁模式防止更新冲突

2.0.4 2023-03-25 13:37 UTC

README

Codacy Badge StyleCI License Total Downloads Latest Stable Version

使用 Laravel 中的乐观锁模式防止更新冲突

此包可以在不依赖 Enso 生态系统的情况下独立工作。

有关实时示例和演示,您可以访问 laravel-enso.com

安装

  1. 安装包 composer require laravel-enso/versioning
  2. 运行迁移
  3. 在您希望版本化的模型上使用 Versionable 特性。

默认情况下,版本值保存在 'version' 属性中,但可以进行自定义(见下文)。

特性

  • 该包创建一个 versionings 表,用于存储所有可版本化模型的版本
  • 通过在模型上使用 Versionable 特性,版本化会自动处理
  • 默认情况下,特性在模型检索后追加一个 version 属性,用于跟踪版本,并期望在更新时模型上存在相同的属性
  • 默认版本化属性可以通过在模型上使用 protected $versioningAttribute = 'customVersionAttribte' 进行自定义
  • 该特性可用于已在数据库中具有记录的模型,版本化从检索这些模型的第一步开始
  • 当删除可版本化模型时,其版本化也会被删除。如果模型使用 SoftDeletes,则版本化不会删除,除非执行 forceDelete
  • 如果更新时版本不匹配,则抛出 ConflictHttpException
  • 包中包含测试

配置与使用

请确保查看此包的完整文档,可在此处找到:docs.laravel-enso.com

贡献

欢迎。拉取请求很棒,但问题也很好。

许可

此包在 MIT 许可下发布。