Gelung foreach bersarang mengulangi baris (Laravel 9)
P粉268654873
P粉268654873 2023-08-31 18:57:33
0
1
491
<p>Saya sedang mengusahakan projek sebenar pertama saya menggunakan Laravel 9. Saya telah menghadapi masalah yang tidak dapat saya selesaikan. Saya mempunyai dua jadual "kategori" dan "artikel" yang digabungkan dengan medan id (jadual kategori) dan category_id (jadual artikel). </p> <p>Dalam Pengawal Kategori saya: </p> <pre class="brush:php;toolbar:false;">kategori fungsi awam(){ $categories = Kategori::semua(); $articles = Artikel::semua(); return view('category.categories')->with('cats',$categories)->with('arts',$articles); }</pre> <p>Paparan Blade Saya disediakan seperti ini:</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->tajuk }}</li> @lain <li>Tiada artikel</li> @endif @endforeach </ul> </li> @endforeach</pre> <p>Apabila saya mendaftar masuk, saya mendapat ini</p> <pre class="brush:php;toolbar:false;">Kategori 1 Tajuk artikel 1 Tiada artikel Tiada artikel Tiada artikel Tiada artikel Kategori 2 Tiada artikel Tajuk artikel 2 Tiada artikel Tiada artikel Tiada artikel Kategori 3 Tiada artikel Tiada artikel Tajuk artikel 3 Tiada artikel Tiada artikel Kategori 4 Tiada artikel Tiada artikel Tiada artikel Tajuk artikel 4 Tiada artikel Kategori 5 Tiada artikel Tiada artikel Tiada artikel Tiada artikel Tiada artikel</pra> <p>Bagaimanakah saya hendak membetulkannya supaya ia hanya memaparkan "Tiada artikel di bawah kategori 5" sekali?</p>
P粉268654873
P粉268654873

membalas semua(1)
P粉111641966

Saya akan memastikan hubungan dalam model anda diwujudkan.

Dalam model kategori anda:

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

Kemudian, dalam Pengawal Kategori anda:

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

Saya tidak pasti tentang bahagian bilah, tetapi anda sepatutnya boleh melakukannya:

<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>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!