czim/laravel-modelcomparer

执行模型在更新前后的深层嵌套比较。

3.0.0 2022-11-01 16:36 UTC

README

Latest Version on Packagist Software License Build Status

此模型比较器是一个工具,用于轻松收集、记录和报告对Eloquent模型及其关系的更改。

比较单个Eloquent模型在更新前后的模型属性(或在更新过程中使用getDirty())相对容易。不幸的是,在更新深层嵌套的关联模型结构时跟踪更新是困难的。

使用此包,在更改模型之前加载模型,然后再次加载它。比较器实例跟踪更改并提供创建简洁变更日志的手段。

版本兼容性

安装

通过Composer

$ composer require czim/laravel-modelcomparer

如果您没有使用自动发现(或安装的版本低于3.0),请在您的config/app.php配置中添加服务提供者。

    Czim\ModelComparer\ModelComparerServiceProvider::class,

使用方法

  1. 初始化比较器实例
  2. 在更改之前,通过传递模型将比较器的初始状态设置为“之前的状态”
  3. 更改与模型相关的任何内容
  4. 再次传递模型来运行比较

结果是包含所有更改的比较信息对象,并提供易于记录的手段。

待办事项

  • 添加单例和外观,以便轻松跟踪更改

    • 将使用模型的类和键来跟踪之前的状态,并允许设置之后的状态
    • 甚至可能使用观察者模式来实现
    • 注意:不建议用于长时间运行的过程,除非使用清理方法来保持内存负载较小
  • 改进关联模型的更改跟踪

    • 在比较器中通过模型类和键跟踪之前的状态索引
      • 单例应将此委托给当前活动的比较器
    • 跟踪模型在通过和之后仍然通过相关关系(但为不同的中介关系)时的更改
    • 允许手动为即将相关的模型“加载”之前的状态

贡献

有关详细信息,请参阅CONTRIBUTING

鸣谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件