hgato/php-crud-comparator

用于比较PHP模型数组的库

v1.0.5 2023-03-14 16:48 UTC

This package is auto-updated.

Last update: 2024-09-14 20:25:32 UTC


README

此库旨在比较模型数组,并返回3个数组:创建、更新、删除。

执行逻辑如下

  • 作为第一个参数提供旧模型数组
  • 作为第二个参数提供新模型数组
  • 作为第三个参数提供ID字段数组
  • 作为第四个参数提供二级字段数组
  • 如果具有相同ID(所有ID字段视为组合键)的模型在旧数组和新数组中都存在,但二级字段不同,则该模型被视为更新
  • 如果具有相同ID的模型在旧数组和新数组中都存在,且二级字段相同,则忽略模型
  • 如果模型在旧数组中但不在新数组中,则模型应被删除
  • 反之,在新的数组中但不在旧的数组中 - 模型应创建

典型用例:前端发送模型数组,但不说有什么变化。同时,一些数据已在数据库中。此库有助于找出差异。

示例

class TestObject
{
  public $id;
  public $key;
  public $name;
  public $description;
}

$oldArray = [/* Some instances of TestObject*/];
$newArray = [/* Other instances of TestObject*/];

$comparator = new ObjectComparator();
$comparator->compare(
    $oldArray,
    $newArray,
    ['id', 'key'],
    ['name', 'description']
);

$create = $comparator->getCreate();
$update = $comparator->getUpdate();
$delete = $comparator->getDelete();