JSON yang Anda harapkan menampilkan foods
sebagai anak dari portions
. Untuk melakukan ini, Anda perlu mengatur hubungan ini.
Di Portion
. Anda model, Anda perlu mengatur hubungan berikut:
public function foods() {
return $this->hasMany(Food::class);
}
Dengan pengaturan hubungan ini, Anda sekarang bisa mendapatkan data Anda seperti ini:
$categories = App\FoodGroup::with('portions.foods')->get();
Ini akan memuat kelompok makanan Anda, kemudian memuat porsi ke dalam kelompok makanan, dan kemudian memuat makanan ke dalam porsi.
Sunting
Saya mungkin sedikit salah membaca pertanyaan Anda. Saya berasumsi Anda memiliki portions
hubungan didefinisikan pada \App\FoodGroup
. Jika tidak, Anda dapat menambahkan ini seperti ini:
Grup Makanan:
public function portions() {
// the second parameter is the name of the pivot table.
// in this case, your foods table connects your portions and food groups.
return $this->belongsToMany(Portion::class, 'foods')->distinct();
}
Edit 2
Solusi ini sedikit meretas karena menangani foods
tabel sebagai tabel pivot, meskipun tidak dirancang khusus untuk itu. Karena itu, ada beberapa entri di foods
tabel yang berisi nilai pasangan kunci yang sama, dan inilah mengapa Anda mendapatkan model terkait duplikat.
Jika Anda melempar distinct()
ke hubungan, ini harus mengatasi masalah, karena akan menghilangkan duplikat yang dibuat dari gabungan bagian dalam. Kode di atas telah diubah.