我需要帮助如何使用 Laravel eloquent 和 foreach 循环按日期对数组进行分组?

问题描述

您好,我在 Laravel foreach 中对数组进行分组时遇到问题。我有一个

My Sample Array

这样的数组结果来自 laravel eloquent groupby(['date','project_site_id'])。现在我的预期输出是该日期以下的所有日期将被合并

Expected sample output

。下面是我的代码

$current_date = Carbon::parse(date('Y-m-d'));

$data = EmployeeActivities::where('date','>=',$current_date->startOfWeek()->format('Y-m-d'))
    ->where('date','<=',$current_date->endOfWeek()->format('Y-m-d'))
    ->get()
    ->groupBy(['date','project_site_id']);

foreach($data as $key => $value){
    foreach($value as $key_nested){
        echo $key.' '.$key_nested.'</br></br>';
    }
}

解决方法

根据 group by 子句 groupBy(['date','project_site_id']) 结果显示良好,因为对于日期 2021-02-01 有 2 行具有不同的 project_site_id,这就是它们被分开的原因。如果您只想按日期对集合进行分组,则从分组条件中删除 project_site_id

$data = EmployeeActivities::where('date','>=',$current_date->startOfWeek()->format('Y-m-d'))
                          ->where('date','<=',$current_date->endOfWeek()->format('Y-m-d'))
                          ->get()
                          ->groupBy(['date']);