आपका अपेक्षित JSON foods
दिखाता है portions
. के बच्चे के रूप में . ऐसा करने के लिए, आपको इस संबंध को स्थापित करने की आवश्यकता है।
आपके Portion
. पर मॉडल, आपको निम्न संबंध स्थापित करने की आवश्यकता है:
public function foods() {
return $this->hasMany(Food::class);
}
इस संबंध सेटअप के साथ, अब आप अपना डेटा इस प्रकार प्राप्त कर सकते हैं:
$categories = App\FoodGroup::with('portions.foods')->get();
यह आपके खाद्य समूहों को लोड करेगा, फिर यह भागों को खाद्य समूहों में लोड करेगा, और फिर यह खाद्य पदार्थों को भागों में लोड करेगा।
संपादित करें
हो सकता है कि मैंने आपके प्रश्न को थोड़ा गलत तरीके से पढ़ा हो। मुझे लगा कि आपके पास Portion
है \App\FoodGroup
. पर परिभाषित संबंध . यदि नहीं, तो आप इसे इस प्रकार जोड़ सकते हैं:
खाद्य समूह:
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();
}
2 संपादित करें
यह समाधान थोड़ा हैकी है क्योंकि यह foods
. का इलाज कर रहा है तालिका को पिवट तालिका के रूप में, हालांकि इसे विशेष रूप से इसके लिए डिज़ाइन नहीं किया गया था। इस वजह से, foods
. में कई प्रविष्टियां हैं तालिका जिसमें समान कुंजी जोड़ी मान होते हैं, और यही कारण है कि आपको डुप्लिकेट संबंधित मॉडल मिल रहे हैं।
यदि आप एक distinct()
फेंकते हैं रिश्ते पर, इस मुद्दे का ख्याल रखना चाहिए, क्योंकि यह आंतरिक जुड़ाव से बनाए गए डुप्लिकेट को खत्म कर देगा। उपरोक्त कोड को संशोधित कर दिया गया है।