tahsinyuksel / ty-mapping-merge
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-21 00:14:35 UTC
README
ty-mapping-merge; 包含多个数据进行映射和合并的结果。
对象和数组可用。
例如
帖子与用户关系的映射和合并。
映射:关系,键,帖子(fromUserId) <==> 用户(id)
合并:选择字段(fromUser)的关联数据合并
// post data
$posts = array(
array('id'=> 1, 'title'=> 'happy years 2018', 'fromUserId'=> 1),
array('id'=> 2, 'title'=> 'i want to see you', 'fromUserId'=> 1),
array('id'=> 3, 'title'=> 'Champion RealMadrid', 'fromUserId'=> 2),
array('id'=> 4, 'title'=> 'love php', 'fromUserId'=> 3),
);
// user data
$users = array(
array('id'=> 1, 'name'=> 'George', 'avatar'=> 'user1.jpg'),
array('id'=> 2, 'name'=> 'Jack', 'avatar'=> 'user2.jpg'),
array('id'=> 3, 'name'=> 'Oscar', 'avatar'=> 'user3.jpg'),
);
结果
Array
(
[0] => Array
(
[id] => 1
[title] => happy years 2018
[fromUserId] => 1
[fromUser] => Array
(
[id] => 1
[name] => George
[avatar] => user1.jpg
)
)
)
用例
在一个结果中合并不同的数据源
创建或合并关系型数据源
通过微服务结果创建数据,合并
聚合多个结果的数据
微服务
例如社交应用,微服务架构
- 帖子微服务
- 用户微服务
- 点赞微服务
- 评论微服务
- 指标微服务等。
逐步数据聚合
posts = postService->getPosts();
ids = posts.extractIds();
fromUserIds = posts.extractFromUserIds();
// get result sets by per microservice
users = userService->getByIds(fromUserIds);
likes = likeService->getByIds(ids);
comments = commentService->getByIds(ids);
metrics = metricService->getByIds(ids);
数据映射、聚合、组合、合并、连接?
用于TyMappingMerge。
如何使用
/*
$posts = array( ... );
$users = array( ... );
... defines codes ...
*/
// option user
$optionUser = new MapOption();
$optionUser->setVar($users);
$optionUser->setProp('fromUser');
$optionUser->setMapField('fromUserId');
$optionUser->setTargetMapField('id');
// set options
$options[] = $optionUser;
// mapping
$mapping = new OptionMapping();
$mapping->setOptions($options);
$result = $mapping->map($posts);
查看测试目录中的社交应用示例
文档
MapOption:多个映射和合并定义。
MapOption函数
->setVar($targetVar) 必要:关系数据的目标变量
->setProp('viewField') 必要:添加目标结果
->setMapField('sourceRelationField') 必要:源关系键字段
->setTargetMapField('targetRelationId') 可选:为空时则使用源映射字段
->setSetType('add') 可选:项目添加类型(set|add|bool)默认:set ->setSelects(array('id', 'message')) 可选:选择可见字段
OptionMapping:主要的映射和合并操作。
OptionMapping函数
->setOptions($defineOptionList) 必要:映射规则定义
->map($mainData) 必要:主源数据
功能
- 建立收件人间的关系
- 使用自定义字段进行数据合并
- 数组或对象可用
- 选择可见字段
- 易于使用
示例和测试
查看测试文件夹
支持类型
数组和对象
待办事项
嵌套数据
要求 & 依赖
PHP 版本 >= 5.4
版本
v1.1.0
许可
MIT
联系方式
问题、建议、评论
Tahsin Yüksel info@tahsinyuksel.com