laravel - 如果键值相同,如何合并 laravel 集合?或添加新的数据行
问题描述
我有两个系列,比如..
date sum_total count_total
2020-05-10 10 5
2020-05-11 11 6
2020-05-13 5 7
第二个集合
date1 sum_total1 count_total2
2020-05-10 1 5
2020-05-12 2 4
2020-05-13 0 7
我需要像...这样的输出
date sum_total count_total
2020-05-10 11 10
2020-05-11 11 6
2020-05-12 2 4
2020-05-13 5 14
我需要根据日期排列数据。
解决方案
假设集合是这样的;
public function index()
{
$first = collect([
[
'date' => '2020-05-10',
'sum_total' => 10,
'count_total' => 5,
],
[
'date' => '2020-05-11',
'sum_total' => 11,
'count_total' => 6,
],
[
'date' => '2020-05-13',
'sum_total' => 5,
'count_total' => 7,
]
]);
$second = collect([
[
'date' => '2020-05-10',
'sum_total' => 1,
'count_total' => 5,
],
[
'date' => '2020-05-12',
'sum_total' => 2,
'count_total' => 4,
],
[
'date' => '2020-05-13',
'sum_total' => 0,
'count_total' => 7,
]
]);
return $first->merge($second)
->groupBy('date')
->map(function ($sub) {
return [
'date' => $sub->first()['date'],
'sum_total' => $sub->sum('sum_total'),
'count_total' => $sub->sum('count_total'),
];
})
->sortBy('date')
->values();
}
它打印;
[
{
"date": "2020-05-10",
"sum_total": 11,
"count_total": 10
},
{
"date": "2020-05-11",
"sum_total": 11,
"count_total": 6
},
{
"date": "2020-05-12",
"sum_total": 2,
"count_total": 4
},
{
"date": "2020-05-13",
"sum_total": 5,
"count_total": 14
}
]
推荐阅读
- django - 将数据迁移到 django 中的多对多字段
- java - Azure Pipeline Maven 构建失败并出现 Spring 类型转换器错误
- javascript - 如何使用 javascript 从外部 xml 文件填充下拉列表
- base64 - 是的 dataURI 验证
- python - 在 Pandas Dataframe 中组合列的值和状态条件
- c++ - 为什么当 std::vector 重定位存储时,复制 ctor 优于 move-ctor?
- php - 如何使用 API Gateway + Lambda + PHP 制作包含 zip 文件的响应
- dictionary - 带有嵌套列表的字典中的 For 循环
- python - 如何将所有图像数据转换为数组
- css - VueJS