Я пытаюсь оптимизировать свой код, получая несколько результатов из одного запроса. Я пытаюсь получить общее количество посещений сотрудников для каждого статуса. Мой код такой, как показано ниже
public function ajaxGetMonthlyAttendanceReport(Request $request){
$securityGroupAccess = AccessControllHelper::getSecurityGroupAccess();
// SECTION: DATA QUERY
$employeeClockInOut = EmployeeClockInOutRecord::join('employees', 'employee_clock_in_out_records.emp_id', '=', 'employees.id')
->where(function($query) use($securityGroupAccess){
$query->whereIn('employees.main_security_group_id', $securityGroupAccess);
});
// SECTION: POPULATE DATA
$totalNormal = $employeeClockInOut->where('employee_clock_in_out_records.clock_in_status', 'Normal')->count();
$totalLate = $employeeClockInOut->where('employee_clock_in_out_records.clock_in_status', 'Late')->count();
$totalAbsent = $employeeClockInOut->where('employee_clock_in_out_records.clock_in_status', 'Absent')->count();
$data = [
'total_normal' => $totalNormal,
'total_late' => $totalLate,
'total_absent' => $totalAbsent,
];
return response()->json($data);
}
, но когда я это сделаю, только первая декальтрация получит правильное значение. Например:
, если я объявлю $totalNormal
перед другими, как код выше:
response = {total_normal: 4, total_late: 0, total_absent: 0}
, если я объявлю $totalAbsent
перед остальными:
response = {total_normal: 0, total_late: 0, total_absent: 1}
Чем вызвана эта проблема и как я могу ее решить?