Есть ли лучший способ передать переменные внутри вложенного для l oop из контроллера в представление? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть работающий код ниже с использованием Laravel 7 (последняя версия) и PHP 7.4.4 (последняя версия), но я хочу спросить, есть ли лучший способ реализации.

Итак в основном, проблема заключается во вложенности для l oop. Я хочу управлять переменными 'semesters' и 'subject' в контроллере и передавать их в представление (index.blade. php). Тем не менее, 'subject' зависит от 'semesters' , таким образом, я принудительно записал логи c внутри шаблона лезвия, такие как: $subjects = $semester->subjects()->where(SOME QUERY HERE)->get()

Ниже приведен фрагмент кода:

index.blade. php

@foreach($semesters as $semester)
   @if($subjects = $semester->subjects()->where(SOME QUERY HERE)->get())
      @if($subjects->isNotEmpty())
        //SOME CODE HERE
        @foreach($subjects as $subject)
             //SOME CODE HERE
        @endforeach
      @endif
   @endif
@foreach

Есть ли лучший способ реализовать это? Заранее спасибо.


Редактировать

Я также беспокоюсь о запросе, так как он находится внутри l oop. Однако я просто изменю свои спецификации дизайна, чтобы ограничить число 'семестров' , которые будут отображаться в представлении. Это также ограничивает запрос внутри l oop. Но, если у вас есть лучшая реализация, пожалуйста, предложите. Большое спасибо.

1 Ответ

0 голосов
/ 17 апреля 2020

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

$semesters = Semester::with([
    'subjects' => function ($query) {
        $query->where() // SOME QUERY HERE.
    },
])
->get();

Теперь, когда вы звоните $semester->subjects, он возвращает только эти отфильтрованные объекты.

Пример кода

@foreach($semesters as $semester)
    @if($semester->subjects->isNotEmpty())
        //SOME CODE HERE
        @foreach($semester->subjects as $subject)
             //SOME CODE HERE
        @endforeach
    @endif
@foreach

Редактировать

Теперь вам не нужно беспокоиться о запросах в общем oop. Как видите, мы уже загрузились. Который называется нетерпеливая загрузка

...