La boucle foreach imbriquée répète des lignes (Laravel 9)
P粉268654873
P粉268654873 2023-08-31 18:57:33
0
1
532
<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>
P粉268654873
P粉268654873

répondre à tous(1)
P粉111641966

Je m'assurerais que les relations dans votre modèle sont établies.

Dans votre catégorie modèle :

public function articles()
{
    return $this->hasMany(Article::class);
}

Ensuite, dans votre CategoryController :

public function categories(){
    $categories = Category::with('articles')->get();
    return view('category.categories')->with('cats',$categories);
}

Je ne suis pas sûr pour la partie lame, mais vous devriez pouvoir le faire :

<ul>
  @foreach($cats as $cat)
    <li>{{ $cat->name}}</li>
    @if(empty($cat->articles))
      <li>No articles</li> 
    @else
      <ul>
        @foreach($cat->articles as $art)
          <li>{{ $art->title }}</li>
        @endforeach
      </ul>
    @endif
  @endforeach
</ul>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal