czim / laravel-modelcomparer
执行模型在更新前后的深层嵌套比较。
3.0.0
2022-11-01 16:36 UTC
Requires
- php: ^8.1
- ext-json: *
Requires (Dev)
- czim/laravel-paperclip: *
- czim/phpunit-printer: ^1.0
- mockery/mockery: ^1.0
- nunomaduro/larastan: ^2.2
- orchestra/database: ^7.0
- orchestra/testbench: ^7.0
- phpstan/phpstan-mockery: ^1.1
- phpstan/phpstan-phpunit: ^1.1
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-08-29 03:31:36 UTC
README
此模型比较器是一个工具,用于轻松收集、记录和报告对Eloquent模型及其关系的更改。
比较单个Eloquent模型在更新前后的模型属性(或在更新过程中使用getDirty()
)相对容易。不幸的是,在更新深层嵌套的关联模型结构时跟踪更新是困难的。
使用此包,在更改模型之前加载模型,然后再次加载它。比较器实例跟踪更改并提供创建简洁变更日志的手段。
版本兼容性
安装
通过Composer
$ composer require czim/laravel-modelcomparer
如果您没有使用自动发现(或安装的版本低于3.0),请在您的config/app.php
配置中添加服务提供者。
Czim\ModelComparer\ModelComparerServiceProvider::class,
使用方法
- 初始化比较器实例
- 在更改之前,通过传递模型将比较器的初始状态设置为“之前的状态”
- 更改与模型相关的任何内容
- 再次传递模型来运行比较
结果是包含所有更改的比较信息对象,并提供易于记录的手段。
待办事项
-
添加单例和外观,以便轻松跟踪更改
- 将使用模型的类和键来跟踪之前的状态,并允许设置之后的状态
- 甚至可能使用观察者模式来实现
- 注意:不建议用于长时间运行的过程,除非使用清理方法来保持内存负载较小
-
改进关联模型的更改跟踪
- 在比较器中通过模型类和键跟踪之前的状态索引
- 单例应将此委托给当前活动的比较器
- 跟踪模型在通过和之后仍然通过相关关系(但为不同的中介关系)时的更改
- 允许手动为即将相关的模型“加载”之前的状态
- 在比较器中通过模型类和键跟踪之前的状态索引
贡献
有关详细信息,请参阅CONTRIBUTING。
鸣谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。