[英]Complex Laravel 5 group by on collection
我有一个具有“站点”和“检查”关系的“事件”集合。
我想做的是将“检查日期”中的所有事件分组,然后在“事件”中按“站点”分组。
IE
一旦进行了分组,我想输出一个数组:
[
'title => 'Site Name: Event Name, Event Name, Event Name',
'date' => 'YYYY-MM-DD'
]
这远远超出了我的智慧,因此我们将不胜感激! 顺便说一句,我正在使用Postgresql,所以看来我只能在id上使用groupBy吗?
我已经尝试了一些使用groupBy()和map()的事情,这似乎让我有些困惑,但是不确定如何进行:
$events = $events->groupBy('inspection.id')->map(function($item){
return $item->groupBy('site.id');
});
假设结构(简化为数组):
$events = [
'name' => 'event name',
'inspection' => ['date' => ' ... '] // relation
'site' => ['name' => ' ... '] // relation
这是您需要的:
$collection
->groupBy('inspection.date')
->map(function ($events, $date) {
return $events
->groupBy('site.name')
->map(function ($events, $site) use ($date) {
return [
'title' => $site_name.': '.$events->implode('name', ', '),
'date' => $date
];
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.