Php 复杂的Laravel 5,按集合分组

Php 复杂的Laravel 5,按集合分组,php,arrays,laravel,grouping,Php,Arrays,Laravel,Grouping,我有一个集合“事件”,它与“站点”和“检查”有关系 我想做的是在“检查日期”将所有事件分组,然后在此组下按“站点”将事件分组 即 检验日期(YYYY-MM-DD) 场地1 事件名称 事件名称 站点2 事件名称 检验日期(YYYY-MM-DD) 场地1 事件名称 一旦我有了这个分组,我想输出一个数组,如下所示: [ 'title => 'Site Name: Event Name, Event Name, Event Name', 'date' =>

我有一个集合“事件”,它与“站点”和“检查”有关系

我想做的是在“检查日期”将所有事件分组,然后在此组下按“站点”将事件分组

  • 检验日期(YYYY-MM-DD)
    • 场地1
      • 事件名称
      • 事件名称
    • 站点2
      • 事件名称
  • 检验日期(YYYY-MM-DD)
    • 场地1
      • 事件名称
一旦我有了这个分组,我想输出一个数组,如下所示:

[
  '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=[
“名称”=>“事件名称”,
“检验”=>[“日期”=>“…”]//关系
'site'=>['name'=>'…']//关系
这就是您需要的:

$collection
->分组依据(“检查日期”)
->映射(函数($events,$date){
返回$events
->groupBy('site.name')
->映射(函数($events,$site)使用($date){
返回[
'title'=>$site_name.:'.$events->内爆('name',','),
“日期”=>$date
];
}); 
});

谢谢你的回复。我收到了错误消息:
array\u key\u exists():第一个参数应该是字符串或整数
与Postgresql有关的内容?不,很可能你传递的键实际上是一个对象。粘贴代码这肯定是导致问题的日期,因为我可以在类似('inspection.name')或('inspection.id'),但不是inspection.date-我是否可以在groupBy闭包中将日期转换为字符串?感谢您为我指明了正确的方向,通过使用以下方法实现了这一点:
->groupBy(function($events){return$events->inspection->inspected_at->format('Y-m-d');})
现在我想做的是获取事件的另一个关系(EventType)并将
$event->EventType->name内爆为'title'
-有什么想法吗?