La boucle foreach imbriquée répète des lignes (Laravel 9)
P粉268654873
2023-08-31 18:57:33
<p>Je travaille actuellement sur mon premier vrai projet utilisant Laravel 9. J'ai rencontré un problème que je n'arrive pas à résoudre. J'ai deux tables "category" et "article" qui sont jointes aux champs id (table de catégories) etcategory_id (table d'articles). </p>
<p>Dans mon CategoryController : </p>
<pre class="brush:php;toolbar:false;">catégories de fonctions publiques(){
$categories = Catégorie :: tout ();
$articles = Article :: tous ();
return view('category.categories')->with('cats',$categories)->with('arts',$articles);
}</pré>
<p>Ma vue Blade est configurée comme ceci :</p>
<pre class="brush:php;toolbar:false;"><ul>
@foreach($chats comme $cat)
<li>{{ $cat->nom}}
<ul>
@foreach($arts comme $art)
@if($cat->id == $art->category_id)
<li>{{ $art->title }}</li>
@autre
<li>Aucun article</li>
@fin si
@endforeach
</ul>
≪/li>
@endforeach</pre>
<p>Lorsque je suis arrivé, j'ai reçu ceci</p>
<pre class="brush:php;toolbar:false;">Catégorie 1
Titre de l'article 1
Aucun article
Aucun article
Aucun article
Aucun article
Catégorie 2
Aucun article
Titre de l'article 2
Aucun article
Aucun article
Aucun article
Catégorie 3
Aucun article
Aucun article
Titre de l'article 3
Aucun article
Aucun article
Catégorie 4
Aucun article
Aucun article
Aucun article
Titre de l'article 4
Aucun article
Catégorie 5
Aucun article
Aucun article
Aucun article
Aucun article
Aucun article</pre>
<p>Comment puis-je résoudre ce problème pour qu'il n'affiche qu'une seule fois « Aucun article dans la catégorie 5 » ?</p>
Je m'assurerais que les relations dans votre modèle sont établies.
Dans votre catégorie modèle :
Ensuite, dans votre CategoryController :
Je ne suis pas sûr pour la partie lame, mais vous devriez pouvoir le faire :