Verschachtelte foreach-Schleife wiederholt Zeilen (Laravel 9)
P粉268654873
P粉268654873 2023-08-31 18:57:33
0
1
501
<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粉268654873
P粉268654873

Antworte allen(1)
P粉111641966

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

在您的类别模型中:

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>
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!