繁体   English   中英

Complex Laravel 5 group by分类

[英]Complex Laravel 5 group by on collection

我有一个具有“站点”和“检查”关系的“事件”集合。

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

IE

  • 检验日期(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 = [
   '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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM