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();