我有一个'事件'系列,它与“网站”有关。 '检验'。
我想要做的是将所有事件分组到'检查日期',然后在此组下将事件分组为'网站'。
即
一旦我进行了这个分组,我想输出一个像:
这样的数组[
'title => 'Site Name: Event Name, Event Name, Event Name',
'date' => 'YYYY-MM-DD'
]
这远远高于我的智慧,所以任何帮助将不胜感激! BTW我正在使用Postgresql,所以看来我只能在id上使用groupBy?
我尝试了一些使用groupBy()和map()的东西,这似乎有点让我到处但不知道如何继续:
$events = $events->groupBy('inspection.id')->map(function($item){
return $item->groupBy('site.id');
});
答案 0 :(得分:3)
假设结构(简化为数组):
$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
];
});
});