Laravel запрос нескольких условий ветвления предоставляет неверные данные - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь оптимизировать свой код, получая несколько результатов из одного запроса. Я пытаюсь получить общее количество посещений сотрудников для каждого статуса. Мой код такой, как показано ниже

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}

Чем вызвана эта проблема и как я могу ее решить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...