Я хочу получить идентификатор значения в цикле в представлении и использовать его в запросе вне представления - PullRequest
0 голосов
/ 27 мая 2019

Я создаю страницу, которая показывает карточки с инструкциями.Все шаги находятся в другой таблице, но она показывает карточку инструкции несколько раз при использовании 1 большого запроса.У меня сейчас 2 запроса.Я перебираю 1 запрос, но в то же время хочу использовать идентификатор из карточки с инструкциями, получить все относящиеся к нему шаги и показать его на экране.

Это код в контроллере

$instructiekaarten = DB::table('instructiekaarten')
                             ->join('instructiekaart_set', 'instructiekaart_set.instructiekaart_id' ,'=', 'instructiekaarten.id')
                             ->join('sets', 'sets.id' ,'=', 'instructiekaart_set.set_id')
                             ->join('instructiekaart_user', 'instructiekaart_user.instructiekaart_id' ,'=', 'instructiekaarten.id')
                             ->join('users', 'users.id' ,'=', 'instructiekaart_user.user_id')
                             ->join('instructiekaart_niveau', 'instructiekaart_niveau.instructiekaart_id' ,'=', 'instructiekaarten.id')
                             ->join('niveaus', 'niveaus.id' ,'=', 'instructiekaart_niveau.niveau_id')
                             ->select('sets.name AS sets_name','instructiekaarten.name AS instru_name', 'niveaus.name AS niveaus_name')
                             ->get();

$stappen = DB::table('instructiekaarten')
                              ->join('instructiekaart_stap', 'instructiekaart_stap.instructiekaart_id' ,'=', 'instructiekaarten.id')
                              ->join('stappen', 'stappen.id' ,'=', 'instructiekaart_stap.stap_id')
                              ->select('stappen.name as stap_name')
                              ->where('instructiekaarten.id', '$id')
                              ->get();

Это код в представлении

    @if(count($instructiekaarten) > 0)
        @foreach($instructiekaarten as $instructiekaart)
            <div class="card">
                <a href="/instructiekaarten">
                    <h5 class="card-header">{{$instructiekaart->instru_name}}</h5>
                </a>
                    <div class="card-body">
                        <h5 class="card-title"></h5>
                        @if(count($stappen) > 0)    
                            @foreach($stappen as $stap)
                                <p class="card-text">{{$stap->stap_name}}</p>
                            @endforeach
                        @endif
                    </div>
            </div>
        @endforeach
    @else
        <p>Geen instructiekaarten gevonden</p>
    @endif

Как мне получить идентификатор из карточки с инструкциями и использовать его во втором запросе?

1 Ответ

0 голосов
/ 27 мая 2019

Простой ответ помещает пропущенное поле в ваш выбор:

->select('stappen.name as stap_name', 'instructiekaarten.id AS instructiekaart_id')

Но вам лучше удалить свой второй запрос и добавить отношение ->with('stappen') в свой первый запрос и установить его, как определено здесь: https://laravel.com/docs/5.8/eloquent-relationships#one-to-many

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