Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Laravel 5 - Elequent GROUP BY gagal

Jika saya mengerti dengan benar, Anda ingin mengambil daftar objek Konten bersama dengan anak-anaknya Objek konten, benar?

Cara termudah untuk melakukannya adalah dengan membuat hubungan orangtua-anak di Konten Eloquent Anda model dan kemudian gunakan itu untuk memuat orang tua dengan anak-anak:

<?php
class Content extends Model {
  public function children() {
    //this defines a relation one-to-many using parent_id field as the foreign key
    return $this->hasMany(Content::class, 'parent_id'); 
  }

  public function parent() {
    return $this->belongsTo(Content::class, 'parent_id'); 
  }

  public function section() {
    return $this->belongsTo(Section::class);
  }
}

Kemudian, jika Anda ingin membuat daftar Konten menolak Bagian . mereka bersama dengan anak-anak mereka dan bagian mereka, Anda dapat mengambil data seperti itu:

$contents = Content::with(['children', 'section', 'children.section'])->whereNull('parent_id')->get();

$contents akan berisi kumpulan semua objek Konten yang tidak memiliki induk. Setiap objek akan memiliki $content->children atribut yang menampung koleksi semua anak Konten objek. Semua objek anak juga akan memiliki referensi ke induknya di $childContent->induk . Baik orang tua maupun anak-anak akan memiliki bagian yang sesuai di ->bagian atribut.

Jika Anda ingin menampilkan beberapa hierarki Konten sekarang di Blade . Anda template, Anda dapat meneruskan variabel $contents ke tampilan dan melakukan hal berikut:

<ul>
@foreach($contents as $content)
  <li>{{$content->title}}</li>
  @if($content->children->count() > 0)
    <ul>
      @foreach($content->children as $childContent)
        <li>{{$childContent->title}}</li>
      @endforeach
   </ul>
  @endif
@endforeach
</ul>  

Saya perhatikan Anda memiliki urutan bidang dalam model Anda. Saya berasumsi bahwa Anda ingin konten diurutkan berdasarkan bidang itu. Dalam hal ini Anda perlu mengubah cara Anda mengambil data:

$contents = Content::with(['children' => function($builder) {
  $builder->orderBy('sequence', 'desc');
}, 'section', 'children.section'])->whereNull('parent_id')->get();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menghitung Persentase Pertumbuhan Minggu Ke Minggu di MySQL

  2. Masalah dengan Ruby on Rails dengan Rake

  3. Bidang DATE MySQL dengan default CURDATE(). BUKAN DATETIME

  4. Konfigurasi email dinamis dengan nilai dari database [Laravel]

  5. Python:MySQL:Menangani batas waktu