巢狀 foreach 迴圈重複行 (Laravel 9)
P粉268654873
P粉268654873 2023-08-31 18:57:33
0
1
496
<p>我目前正在使用 Laravel 9 進行我的第一個實際專案。我遇到了一個無法解決的問題。我有兩個表格“類別”和“文章”,它們與字段 id(類別表)和category_id(文章表)連接。 </p> <p>在我的 CategoryController 中:</p> <pre class="brush:php;toolbar:false;">public function categories(){ $categories = Category::all(); $articles = Article::all(); return view('category.categories')->with('cats',$categories)->with('arts',$articles); }</pre> <p>我的 Blade 視圖設定如下:</p> <pre class="brush:php;toolbar:false;"><ul> @foreach($cats as $cat) <li>{{ $cat->name}} <ul> @foreach($arts as $art) @if($cat->id == $art->category_id) <li>{{ $art->title }}</li> @else <li>No articles</li> @endif @endforeach </ul> </li> @endforeach</pre> <p>當我簽入時,我得到了這個</p> <pre class="brush:php;toolbar:false;">Category 1 Article title 1 No articles No articles No articles No articles Category 2 No articles Article title 2 No articles No articles No articles Category 3 No articles No articles Article title 3 No articles No articles Category 4 No articles No articles No articles Article title 4 No articles Category 5 No articles No articles No articles No articles No articles</pre> <p>我該如何解決這個問題,這樣它只顯示一次「類別 5 下沒有文章」</p>
P粉268654873
P粉268654873

全部回覆(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>
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!