2014-06-17 9 views
9

यह एक स्पष्ट प्रश्न की तरह लग सकता है लेकिन मैं बस कुछ आश्वासन प्राप्त करना चाहता हूं।लार्वेल उत्सुक लोडिंग बनाम स्पष्ट रूप से शामिल हो

लार्वेल की उत्सुक लोडिंग कार्यक्षमता का उपयोग करके, जो मैं समझता हूं उससे दो प्रश्न संबंधित परिणामों की पूरी सूची लौटने के लिए तैयार करेगा (कहें कि क्या आप दो तालिकाओं के साथ काम कर रहे हैं)। हालांकि, और अगर मैं गलत हूं, तो मुझे सही करें, एक जॉइन स्टेटमेंट का उपयोग करके आपको केवल एक प्रश्न के साथ छोड़ दिया जाएगा, जो सर्वर के डेटाबेस (MySQL) में एक कम राउंड ट्रिप बनाता है और यह एक अधिक कुशल क्वेरी है।

मुझे पता है कि आप लार्वेल में शामिल प्रश्नों को लिख सकते हैं, जो सवाल है: इसलिए सवाल यह है कि: क्या मुझे लगता है कि दो या दो से अधिक तालिकाओं से संबंधित डेटा को पुनर्प्राप्त करते समय, मुझे उत्सुक लोडिंग से परेशान नहीं होना चाहिए और इसके बजाय अपना खुद का बयान लिखें?

****** संपादित *******

एक साल बाद यह करने के लिए वापस आ रहा है, मैं अपने व्यक्तिगत राय में कहेंगे, बस प्रश्नों लिखने, कच्चे, और उन्हें अच्छी तरह से लिखना ।

उत्तर

9

आप अपनी समझ के बारे में बिल्कुल सही हैं। Laravel में join() का उपयोग करके दो या दो से अधिक तालिकाओं में शामिल होने के लिए join कथन लिखें, तो यह केवल एक क्वेरी बनाता है जहां Eloquent मॉडल eager loading तकनीक के साथ एक से अधिक क्वेरी की आवश्यकता होती है।

मैं नहीं उत्सुक लोड हो रहा है के साथ परेशान और इसके बजाय सिर्फ लिखना मेरे अपने बयान

असल में शामिल होने, eager loading आसानी से Eloquent ORM का उपयोग कर से संबंधित मॉडल लोड करने के लिए एक तकनीक है और यह दृश्य के पीछे Query Builder उपयोग करता है और आपको अपने स्वयं के द्वारा क्वेरी किए बिना Eloquent Model Object का उपयोग करने देता है और डेटा को अलग-अलग प्रदर्शित करता है, Eloquent ORM का उपयोग करके आप सीधे मॉडल के साथ बातचीत कर सकते हैं जो अतिरिक्त सुविधाओं के साथ डेटाबेस में ऑब्जेक्ट का प्रतिनिधित्व करता है। सबसे महत्वपूर्ण बात यह है कि यह की जटिलता को छुपाता है और आपको PHP कोड का उपयोग कर ओओपी फैशन में डेटाबेस क्वेरी करने की अनुमति देता है।

लेकिन जब आप मैन्युअल रूप से join तरीका है जिसके Illuminate\Database\Query\Builder वर्ग के अंतर्गत आता है तो आप Query Builder सीधे उपयोग कर रहे हैं जिसके लिए आवश्यक है कि आप अधिक कोड लिखने और sql query का अधिक ज्ञान की आवश्यकता है, क्योंकि यह आप से प्रश्न छिपा नहीं है, लेकिन आप प्रश्नों बनाने में मदद करता फोन अधिक सटीक, लेकिन आप अभी भी प्रश्न पूछते हैं।

दोनों अलग-अलग चीजें हैं और वे अलग-अलग काम करते हैं। आप ORM vs Query Builder शब्द का उपयोग कर Google पर खोज सकते हैं।

+1

अंतर्दृष्टि के लिए धन्यवाद! मैं इस मामले पर थोड़ा और शोध करूंगा। – Meowts

संबंधित मुद्दे