Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 23.02.2018 18:59:40

Не отрабатывается try-catch

--------------------------------
Версия Laravel в формате 5.5.14

    Версия PHP в формате 7.1

    Операционная система и её версия ( Windows 10 x64 )

    Вендор и версия Веб-сервера в формате Apache- PHP - 7 / Nginx 1.10

---------------------------------

Существует список докторов, которых получаю из БД в переменную:

$doctors = Doctor::select('name', 'specialization')->get();

Есть список клиентов, которые записаны к этим врачам:

$clients = Doctor::select(.....)->get()

В нынешнем варианте реализации проекта для отображения расписания необходимо, что бы каждый элемент коллекции $clients (ключь - имя врача) содержал ровно 9 элементов (это временные отрезки, на которые можно записаться).

400f07ce734f0f520b7571408b13a75f-prev.jpg

По этому, если например, у кого-то есть 8 пациентов, то 9-й отрезок забивается  тестовыми данными.($doctors_time_arr2 - "служебный" массив... так пока надо, в него передаются данныне из $clients) )

foreach ($doctors as $item){
//            try { 
                while (count($doctors_time_arr2[$item->name]) < 9) {
                    array_push($doctors_time_arr2[$item->name], ([ .... ]);

Если каждый из существующих врачей ($doctors) имеет хотя бы по 1 клиенту - все работает норм!, но если например врачей 6, а на сегодня записывались только к 5-ти, то цикл foreach не может заполнить 6-го врача тестовыми данными.
Выдает такую ошибку: ErrorException (E_NOTICE) Undefined index: Олег Дмитриевич.

Я хотел отловить эту ошубку через try-catch.
Так как это  ErrorException, то хотелось как-то так:

        foreach ($doctors as $item){
            try {
                while (count($doctors_time_arr2[$item->name]) < 9) {
                    array_push($doctors_time_arr2[$item->name], ([
                        'name' => 'noname',
                        'specialization' => 'specialization',
                        'doctor' => 'nodoctor',
                        'time' => '19:00',
                        'status' => '2'])
                    );
                }
            }
            catch (ErrorException $e){
                $doctors_time_arr2[] = $item->name;
                while (count($doctors_time_arr2[$item->name]) < 9) {
                    array_push($doctors_time_arr2[$item->name], ([
                        'name' => 'noname',
                        'specialization' => 'specialization',
                        'doctor' => 'nodoctor',
                        'time' => '19:00',
                        'status' => '2'])
                    );
                }
            }

Но ошибка осталась. Как решить этот конфликт?

Изменено PashaKiev (23.02.2018 19:02:57)

Не в сети

Подвал раздела