Din forventede JSON viser foods
som et barn af portions
. For at gøre dette skal du konfigurere denne relation.
På din Portion
model, skal du opsætte følgende forhold:
public function foods() {
return $this->hasMany(Food::class);
}
Med denne relationsopsætning kan du nu få dine data sådan her:
$categories = App\FoodGroup::with('portions.foods')->get();
Dette vil indlæse dine fødevaregrupper, derefter vil det indlæse portionerne i fødevaregrupperne, og så vil det indlæse fødevarerne i portionerne.
Rediger
Jeg har muligvis misforstået dit spørgsmål lidt. Jeg gik ud fra, at du havde en portions
relation defineret på \App\FoodGroup
. Hvis ikke, kan du tilføje dette sådan:
Fødevaregruppe:
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();
}
Rediger 2
Denne løsning er lidt hacky, fordi den behandler foods
bord som et pivotbord, selvom det ikke var specielt designet til det. På grund af dette er der flere poster i foods
tabel, der indeholder de samme nøgleparværdier, og det er derfor, du får duplikatrelaterede modeller.
Hvis du kaster en distinct()
på forholdet, bør dette tage sig af problemet, da det vil eliminere de dubletter, der er oprettet fra den indre sammenføjning. Ovenstående kode er blevet ændret.