如何将集合合并到 laravel 中的特定列
how to merge collections into a specific column in laravel
我有 3 个不同对象的集合。我需要根据共享值(这里共享值是id
)将这3个集合聚合为1个。
我的意思是:
$names = {"id":1, "name":"John"};
$ages = {"id":1, "age":20};
$address = "{"id":1, "address":"222"};
.......
.........
如果我returnreturn $names->merge($ages)->merge($address)
,它会这样显示:
[
{"id":1, "name":"John"},
{"id":1, "age":20},
{"id":1, "address":"222"},
{"id":2, "name":"Jim"},
{"id":2, "age":30},
{"id":2, "address":"333"},
]
我想return这样的我:
[
{"id":1, "name":"John", "age":20 , "address":"222"},
{"id":2, "name":"Jim", "age":30 , "address":"333"}
]
这是我的解决方案:
$items = [
{"id":1, "name":"John"},
{"id":1, "age":20},
{"id":1, "address":"222"},
{"id":2, "name":"Jim"},
{"id":2, "age":30},
{"id":2, "address":"333"},
];
$items = collect($items)->groupBy('id');
$result = [];
foreach ($items as $values) {
$temp = [];
foreach ($values as $value) {
$temp = array_merge($temp, $value);
}
$result[] = $temp;
}
dd($result);
我有 3 个不同对象的集合。我需要根据共享值(这里共享值是id
)将这3个集合聚合为1个。
我的意思是:
$names = {"id":1, "name":"John"};
$ages = {"id":1, "age":20};
$address = "{"id":1, "address":"222"};
.......
.........
如果我returnreturn $names->merge($ages)->merge($address)
,它会这样显示:
[
{"id":1, "name":"John"},
{"id":1, "age":20},
{"id":1, "address":"222"},
{"id":2, "name":"Jim"},
{"id":2, "age":30},
{"id":2, "address":"333"},
]
我想return这样的我:
[
{"id":1, "name":"John", "age":20 , "address":"222"},
{"id":2, "name":"Jim", "age":30 , "address":"333"}
]
这是我的解决方案:
$items = [
{"id":1, "name":"John"},
{"id":1, "age":20},
{"id":1, "address":"222"},
{"id":2, "name":"Jim"},
{"id":2, "age":30},
{"id":2, "address":"333"},
];
$items = collect($items)->groupBy('id');
$result = [];
foreach ($items as $values) {
$temp = [];
foreach ($values as $value) {
$temp = array_merge($temp, $value);
}
$result[] = $temp;
}
dd($result);