有如下数据。
"2017-08-13": [
{
"cancelledByDriver": 0,
"busy": 0,
"cancelledByRider": 0,
"acceptedByDriver": 1,
"requestDate": "2017-08-12T21:03:29.754Z"
},
{
"cancelledByDriver": 0,
"busy": 0,
"cancelledByRider": 0,
"acceptedByDriver": 1,
"requestDate": "2017-08-12T21:08:28.244Z"
}
],
"2017-08-14": [],
"2017-08-15": [],
"2017-08-18": [],
"2017-08-20": [],
"2017-08-21": [],
"2017-08-22": [],
"2017-08-23": [],
"2017-08-24": [],
"2017-08-25": []
我想在每个日期的字段1中打印值的数量。在日期中,有多少个cancelledByDriver,busy,cancelByRider和acceptedByDriver(value = 1)。
示例:
"2017-08-13": [
{
"cancelledByDriver": 0,
"busy": 0,
"cancelledByRider": 0,
"acceptedByDriver": 2,
}
]
我的代码:
$days = $tripRequests->groupBy(function($item) {
return date('Y-m-d', strtotime($item['requestDate']));
})->map(function ($item, $key) {
return collect($item);
});
答案 0 :(得分:0)
我不确定你是否解决了这个问题。但我对此有同样的疑问。最后,我根据Laravel的收藏指南找到了答案。
$days = $tripRequests->groupBy(function($item) {
return date('Y-m-d', strtotime($item['requestDate']));
})->map(function ($item) {
return $item->sum('cancelledByDriver') ;
});
首先,方法groupBy()
能够按给定的键对集合进行分组,这是您正在做的事情。然后使用方法map()
,您可以通过遍历与日期关联的每个项目(例如2017-08-13
)来重新映射集合对象。您需要做的是致电sum()
,以便将cancelledByDriver
加起来。
您将获得一个新的集合,其总和为cancelledByDriver
group by
- 日期。