1
votes

Boucle sur un tableau d'une requête à l'intérieur d'une lame

J'essaie de parcourir un tableau pour une requête écrite dans la lame, comme suit:

syntax error, unexpected '<'

Je reçois l'erreur suivante:

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

La requête fonctionne correctement en utilisant first () en dehors de la boucle @foreach.


0 commentaires

3 Réponses :


1
votes

Ce que vous faites est une si mauvaise pratique, écrivez toute votre logique dans Controller

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

@foreach($data as $updt_18_a)
//code
@endforeach

La syntaxe ci-dessus sert à faire écho à quelque chose afin de ne pas boucler un tableau mais en écho, faites-le comme ceci

Dans Laraval, si vous faites écho à un tableau ou à un objet, il le convertit automatiquement en objet json afin que vous n'obteniez pas d'erreur de conversion de tableau en chaîne

{{}}


2 commentaires

Si je le fais dans le contrôleur, j'enverrai autant de variables du contrôleur. Quel est le principal inconvénient de mettre une requête en lame?


lorsque votre application s'agrandit, la mettre à jour ou la personnaliser rend la tâche si difficile car vous ne savez jamais où vous avez écrit la logique, mais si vous suivez MVC, vous savez déjà où la logique est écrite, c'est l'inconvénient le plus simple, mais vous pouvez aller plus loin découvrir.



1
votes

La méthode

get () de Laravel renvoie un tableau d'objets et la méthode first () renvoie un seul objet. C'est pourquoi votre requête fonctionne avec first () .

Vous devez donc faire ceci:

// 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


0 commentaires

1
votes
@foreach(\App\Post::where('qid',$updt_18_q->qid)->get()->body ?? [] as $updt_18_a)
//code
@endforeach

0 commentaires