Rumah  >  Soal Jawab  >  teks badan

Gelung foreach bersarang mengulangi baris (Laravel 9)

<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粉268654873P粉268654873437 hari yang lalu516

membalas semua(1)saya akan balas

  • P粉111641966

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

    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>

    balas
    0
  • Batalbalas