Цикл массива запроса внутри блейда - PullRequest
1 голос
/ 19 октября 2019

Я пытаюсь перебрать массив для запроса, записанного в блейде, следующим образом:

@foreach({{\App\Post::where('qid',$updt_18_q->qid)->get()->body}} as $updt_18_a)

Я получаю следующую ошибку:

syntax error, unexpected '<'

запрос работает нормально, используя first() вне цикла @foreach.

Ответы [ 3 ]

1 голос
/ 19 октября 2019
Метод

get() в Laravel возвращает массив объектов, а метод first() возвращает один объект. Вот почему ваш запрос работает с first().

Так что вам нужно сделать это:

// This is your array of objects.
@php($posts = \App\Post::where('qid',$updt_18_q->qid)->get())

// Iterate through array
// $updt_18_a is your Post object
/* $updt_18_a \App\Post */
@foreach($posts as $updt_18_a)
 $body = $updt_18_a->body; // Access like this.
 // Code here
@endforeach
1 голос
/ 19 октября 2019
@foreach(\App\Post::where('qid',$updt_18_q->qid)->get()->body ?? [] as $updt_18_a)
//code
@endforeach
1 голос
/ 19 октября 2019

То, что вы делаете - это плохая практика, напишите всю свою логику в Controller

{{}}

Вышеуказанный синтаксис предназначен для вывода чего-либо, чтобы вы не зацикливали массив, а повторяли егосделайте это так

В Laraval, если вы выводите массив или объект, он автоматически преобразует его в объект json, поэтому вы не получите ошибку преобразования массива в строку

@php $data = \App\Post::where('qid',$updt_18_q->qid)->get() @endphp

@foreach($data as $updt_18_a)
//code
@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...