合并两个具有相同键的 eloquent collections
Merge two eloquent collections with identical keys
假设我有一个 collection 喜欢
{
"object1": [
{
"name" xxx,
"size" 999
}
],
"object2": [
{
"name": yyy,
"size": 888,
}
]
}
我还有一个collection喜欢
{
"object2": [
{
"name" aaa,
"size" 111
}
],
"object3": [
{
"name": bbb,
"size": 222,
}
]
}
我想要一个collection赞
{
"object1": [
{
"name" xxx,
"size" 999
}
],
"object2": [
{
"name": yyy,
"size": 888,
},
{
"name" aaa,
"size" 111
}
],
"object3": [
{
"name": bbb,
"size": 222,
}
]
}
mergeRecursively 有效,但它将额外的结果封装在一个“项目”数组中,如下所示
{
"object1": [
{
"name" xxx,
"size" 999
}
],
"object2": {
"items": [
{
"name": yyy,
"size": 888,
},
{
"name" aaa,
"size" 111
}
]
],
"object3": [
{
"name": bbb,
"size": 222,
}
]
}
感谢任何帮助!谢谢!
您可以使用 Collection::each()
method 遍历一个集合中的每一项并构建一个替换集合。
$results = new Collection;
$collection1->each(function($item, $key) use ($collection2, $results) {
$push = $collection2->has($key) ? $item->mergeRecursive($collection2->get($key)) : $item;
$results[$key] = $push;
});
dump($results);
假设我有一个 collection 喜欢
{
"object1": [
{
"name" xxx,
"size" 999
}
],
"object2": [
{
"name": yyy,
"size": 888,
}
]
}
我还有一个collection喜欢
{
"object2": [
{
"name" aaa,
"size" 111
}
],
"object3": [
{
"name": bbb,
"size": 222,
}
]
}
我想要一个collection赞
{
"object1": [
{
"name" xxx,
"size" 999
}
],
"object2": [
{
"name": yyy,
"size": 888,
},
{
"name" aaa,
"size" 111
}
],
"object3": [
{
"name": bbb,
"size": 222,
}
]
}
mergeRecursively 有效,但它将额外的结果封装在一个“项目”数组中,如下所示
{
"object1": [
{
"name" xxx,
"size" 999
}
],
"object2": {
"items": [
{
"name": yyy,
"size": 888,
},
{
"name" aaa,
"size" 111
}
]
],
"object3": [
{
"name": bbb,
"size": 222,
}
]
}
感谢任何帮助!谢谢!
您可以使用 Collection::each()
method 遍历一个集合中的每一项并构建一个替换集合。
$results = new Collection;
$collection1->each(function($item, $key) use ($collection2, $results) {
$push = $collection2->has($key) ? $item->mergeRecursive($collection2->get($key)) : $item;
$results[$key] = $push;
});
dump($results);