treehouselabs / entity-merger
此包已被废弃,不再维护。未建议替代包。
关于此包最新版本(2.0.2)的许可信息不可用。
实体合并器
2.0.2
2015-07-22 07:57 UTC
Requires
- php: >=5.4
- doctrine/orm: ~2.2,>=2.4.3
- jms/serializer: ~0.16
- symfony/symfony: ~2.5
Requires (Dev)
- doctrine/doctrine-bundle: ~1.2
- jms/serializer-bundle: ~0.12
- phpunit/phpunit: ~4.1
This package is not auto-updated.
Last update: 2020-01-24 14:47:43 UTC
README
实体合并器 是一个可以合并两个实体的库。
使用方法
定义为一个服务
tree_house.entity_merger: class: TreeHouse\EntityMerger\EntityMerger arguments: - @jms_serializer - @doctrine - @jms_serializer.metadata_factory
然后按照以下方式使用
$merger = $container->get('tree_house.entity_merger'); $original = new Entity(); $original->setTitle('A'); var_dump($original->getAuthor()); // output: NULL $update = new Entity(); $update->setTitle('B'); $update->setAuthor('TreeHouse'); $original = $merger->merge($original, $update); var_dump($original->getTitle()) // output: "B" var_dump($original->getAuthor()); // output: "TreeHouse"
要更新空值,您可以提示合并器执行此操作
$merger = $container->get('tree_house.entity_merger'); $original = new Entity(); $original->setTitle('A'); $update = new Entity(); $update->setTitle(null); $update->setAuthor('TreeHouse'); $original = $merger->merge($original, $update, null, true); var_dump($original->getTitle()) // output: NULL var_dump($original->getAuthor()); // output: "TreeHouse"
也可以通过提供一个包含必须包含的属性名的数组来排除字段
$merger = $container->get('tree_house.entity_merger'); $original = new Entity(); $original->setTitle('A'); $update = new Entity(); $update->setTitle('B'); $update->setAuthor('TreeHouse'); // include the given fields, make sure to camelcase the fieldnames when needed $exclusionStrategy = new \TreeHouse\EntityMerger\Serializer\Exclusion\FieldsExclusionStrategy([ 'title' ]); $original = $merger->merge($original, $update, $exclusionStrategy); var_dump($original->getTitle()) // output: "B" var_dump($original->getAuthor()); // output: NULL
也可以传递一个包含字段和值的数组
$merger = $container->get('tree_house.entity_merger'); $original = new Entity(); $original->setTitle('A'); $original->setAuthor('TreeHouse'); $update = ['title' => 'new title']; $original = $merger->merge($original, $update); var_dump($original->getTitle()); // output: "new title" var_dump($original->getAuthor()); // output: "TreeHouse"