См. Отношения базы данных на изображении ниже.
Я хочу показать все доступные часы (9 часов в день) в классе, включая вместимость этого часа и отделы, разрешенные для этого часа, включая предметы, которыеисключены из класса или предметов, для которых класс является исключительным.В моем show.blade.php я создаю таблицу, и каждая ячейка таблицы показывает один доступный час.Поскольку для этого нужны две петли, одна для дней и одна для часа дня, я хочу загрузить классную комнату отношениями.Но, судя по времени, которое требуется для выполнения запроса (почти 2 секунды), и количеству запросов, о которых сообщает телескоп, база данных подвергается сомнению с активной загрузкой или без нее.
В моем контроллере я загружаю отношения следующим образом:
$classroom->load('availableHours.allowedDepartments.exclusiveSubjects.subject',
'availableHours.allowedDepartments.excludedSubjects.subject',
'availableHours.allowedDepartments.department');
Если я выбрасываю классную комнату, отношения загружаются.В моем show.blade.php я перебираю доступные часы следующим образом:
<!-- loop through all the hours of the day -->
@for($i=1;$i<=$maxHour;$i++)
<tr>
<td>
<a href="/classrooms/{{$classroom->number}}/0/{{$i}}/edit">
{{$i}}
</a></td>
<!-- loop through all the days -->
@foreach($days as $day)
<!-- show the available hour either in green (available) or red (unavailable)-->
<td>
<a href="/classrooms/{{$classroom->number}}/{{$day->id}}/{{$i}}/edit">
<!-- show the capacity of the hour of the day-->
{{ $classroom->availableHours()->where([['day_id','=',$day->id],['hour_of_day',$i]] )->first()->capacity }} <br/>
@foreach($classroom->availableHours()->where([['day_id','=',$day->id],['hour_of_day',$i]] )->first()->allowedDepartments as $allowedDepartment)
<!-- show the permitted departments along with any exclusive or excluded subjects-->
{{$allowedDepartment->department->name}}
@foreach ($allowedDepartment->exclusiveSubjects as $subjectDepartment)
{{$subjectDepartment->subject->code}}
@endforeach
<br/>
@endforeach
</a></td>
@endforeach
</tr>
@endfor
Как я уже говорил, это приводит к тому, что база данных снова запрашивается вместо использования предварительно загруженных отношений.Что я делаю не так?