Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

वाक्पटु का उपयोग करके डेटाबेस संबंध के आधार पर JSON प्रतिक्रिया का आदेश कैसे दें

आपका अपेक्षित 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() फेंकते हैं रिश्ते पर, इस मुद्दे का ख्याल रखना चाहिए, क्योंकि यह आंतरिक जुड़ाव से बनाए गए डुप्लिकेट को खत्म कर देगा। उपरोक्त कोड को संशोधित कर दिया गया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अनुक्रमण का उपयोग करके MYSQL डेटाबेस अनुकूलन

  2. जावा में MySQL डेटाटाइम और टाइमस्टैम्प को संभालना

  3. मैं दो दिनांक समय मानों के बीच MYSQL में SQL का उपयोग करके कैसे घटा सकता हूं और परिणाम को मिनटों या सेकंड में पुनर्प्राप्त कर सकता हूं?

  4. MySQL MAX_JOIN_SIZE त्रुटियाँ

  5. उपयोगकर्ता के लिए CREATE आदेश अस्वीकृत