Laravel по-русски

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

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

#1 24.11.2018 15:29:15

Сложный запрос в eloquent на получение записей через несколько связей

Итак, есть несколько таблиц:
Архив(куча полей)
День(свои поля и связь 1 к 1 к архиву)
Сессия(свои поля и связь 1 к 1 к дню)
Лекция(свои поля и связь 1 к 1 к сессии)
Тег(просто название)
Тег лекции(промежуточная таблица с айди лекции и тега)

И вот есть страница(вкладка архива, то есть передаётся id архива в get) где можно создавать теги для лекций. 
Вот код, где по сути берётся архив, через него подбираются сессии, через них лекции, которые передаются в поле select формы.

        $arrLectures = [];
        $form = new Form(new ArchiveTagLectureRel);
        $idParent = request()->input('idParent');
        if ($idParent) {
            $archive = Archive::findOrFail($idParent);
            if ($archive) {
                $days = $archive->days;
                if (count($days) > 0) foreach ($days as $day) {
                    $sessions = $day->sessions;
                    if (count($sessions) > 0) foreach ($sessions as $session) {
                        $lectures = $session->lectures;
                        if (count($lectures) > 0) foreach ($lectures as $lecture) {
                            $arrLectures[$lecture->id] = $lecture->title;
                        }
                    }
                }
            }
        }

        $form->select('lecture_id', 'Lecture')->options($arrLectures)->rules('required');

Работает хорошо, однако я понимаю, что по факту это куча раздельный скль запросов, что не ок для быстродействия. Можно ли как-то сделать один qloquent запрос, который бы вернул мне через связи лекции?

Изменено Kirir (24.11.2018 15:30:30)


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#2 25.11.2018 11:50:23

Re: Сложный запрос в eloquent на получение записей через несколько связей

Пока, думаю, что стоило сессии и лекции выделить столбцы под айди архива, тогда бы и тег мог сразу получать лекции архива и лекция сессию. Ток, увы, уже поздновато это вводить, т.к создана куча записей roll.


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

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