【发布时间】:2020-09-10 22:45:17
【问题描述】:
我正在使用 Laravel (6.3) 构建一个 Web 应用程序
我有一张表appointments,下面是几列
- 身份证
- 开始日期时间
- 结束日期时间
- employee_id
- client_id
我想得到按员工分组的结果,然后在员工内部按 DAY 分组,如下所示:
0 => array:5 [▼
"Angela" => array:6 [▼
"2020-05-25" => array:2 [▼
0 => array:6 [▼
"employee_id" => 6
"appointmentId" => 566
"startDateTime" => "2020-05-25 08:00:00"
"endDateTime" => "2020-05-25 09:00:00"
"employee" => "Angela"
"img_slug" => "salon-adam_angela.jpg"
]
1 => array:6 [▼
"employee_id" => 6
"appointmentId" => 567
"startDateTime" => "2020-05-25 09:00:00"
"endDateTime" => "2020-05-25 10:30:00"
"employee" => "Angela"
"img_slug" => "salon-adam_angela.jpg"
]
]
"2020-05-26" => array:3
"2020-05-27" => array:2
"2020-05-28" => array:4
"2020-05-29" => array:2
"2020-05-30" => array:1
]
"Stefanie" => array:6
"Karolina" => array:6
"Martina" => array:6
"Ivonne" => array:1
]
]
我使用的是 Laravel,所以我的 eloquent 查询看起来像这样
Appointment::where('appointments.employee_id', $employeeId)
->join('employees', 'employees.id', 'appointments.employee_id')
->join('users', 'users.id', 'employees.user_id')
->orderBy('appointments.startDateTime')
->select(
'employees.id as employee_id',
'appointments.id as appointmentId', 'appointments.startDateTime', 'appointments.endDateTime',
'users.first_name as employee'
)
->get()
->groupBy('employee')
->groupBy('appointments.startDateTime')
->toArray();
但它只是按员工分组,而忽略了这一天。
如果我消除->groupBy('appointments.startDateTime'),我会得到所有按员工正确分组的约会,但是当我添加第二个分组时,它只会得到两个更深层次的数组,而不是按日期分组。
我尝试了所有已知的组合都没有成功
我在这里做错了什么?
【问题讨论】: