suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Verschachtelte foreach-Schleife wiederholt Zeilen (Laravel 9)

<p>Ich arbeite derzeit an meinem ersten echten Projekt mit Laravel 9. Ich bin auf ein Problem gestoßen, das ich nicht lösen kann. Ich habe zwei Tabellen „Kategorie“ und „Artikel“, die mit den Feldern „id“ (Kategorietabelle) und „category_id“ (Artikeltabelle) verknüpft sind. </p> <p>In meiner KategorieController: </p> <pre class="brush:php;toolbar:false;">öffentliche Funktionskategorien(){ $categories = Category::all(); $articles = Article::all(); return view('category.categories')->with('cats',$categories)->with('arts',$articles); }</pre> <p>Meine Blade-Ansicht ist wie folgt eingerichtet:</p> <pre class="brush:php;toolbar:false;"><ul> @foreach($cats als $cat) <li>{{ $cat->name}} <ul> @foreach($arts als $art) @if($cat->id == $art->category_id) <li>{{ $art->title }}</li> @anders <li>Keine Artikel</li> @endif @endforeach </ul> </li> @endforeach</pre> <p>Als ich eincheckte, bekam ich Folgendes</p> <pre class="brush:php;toolbar:false;">Kategorie 1 Artikeltitel 1 Keine Artikel Keine Artikel Keine Artikel Keine Artikel Kategorie 2 Keine Artikel Artikeltitel 2 Keine Artikel Keine Artikel Keine Artikel Kategorie 3 Keine Artikel Keine Artikel Artikeltitel 3 Keine Artikel Keine Artikel Kategorie 4 Keine Artikel Keine Artikel Keine Artikel Artikeltitel 4 Keine Artikel Kategorie 5 Keine Artikel Keine Artikel Keine Artikel Keine Artikel Keine Artikel</pre> <p>Wie behebe ich das Problem, sodass nur einmal „Keine Artikel unter Kategorie 5“ angezeigt wird</p>
P粉268654873P粉268654873530 Tage vor553

Antworte allen(1)Ich werde antworten

  • P粉111641966

    P粉1116419662023-09-01 09:04:18

    我会确保您的模型中的关系已建立。

    在您的类别模型中:

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

    然后,在您的 CategoryController 中:

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

    我对刀片部分不太确定,但你应该能够做到:

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

    Antwort
    0
  • StornierenAntwort