उपयोग करते समय ->get()
आप नीचे दिए गए किसी भी उपयोग नहीं कर सकते हैं:
if (empty($result)) { }
if (!$result) { }
if ($result) { }
क्योंकि अगर आप dd($result);
देखेंगे Illuminate\Support\Collection
कि कोई परिणाम नहीं होने पर भी आपको हमेशा एक उदाहरण दिया जाता है । अनिवार्य रूप से आप $a = new stdClass; if ($a) { ... }
जो जाँच रहे हैं वह हमेशा सही रहेगा।
यह निर्धारित करने के लिए कि क्या कोई परिणाम हैं आप निम्न में से कोई भी कर सकते हैं:
if ($result->first()) { }
if (!$result->isEmpty()) { }
if ($result->count()) { }
if (count($result)) { }
तुम भी इस्तेमाल कर सकते हैं ->first()
के बजाय ->get()
क्वेरी बिल्डर जो पहली बार मिलती मॉडल की, या एक उदाहरण वापस आ जाएगी पर null
अन्यथा। यह उपयोगी है यदि आपको डेटाबेस से केवल एक परिणाम की आवश्यकता है या अपेक्षा है।
$result = Model::where(...)->first();
if ($result) { ... }
नोट्स / संदर्भ
बोनस की जानकारी
संग्रह और क्वेरी बिल्डर का अंतर लारवेल के नवागंतुकों के लिए थोड़ा भ्रमित करने वाला हो सकता है क्योंकि विधि के नाम अक्सर दोनों के बीच समान होते हैं। इस कारण से यह जानना भ्रमित हो सकता है कि आप किस पर काम कर रहे हैं। क्वेरी बिल्डर अनिवार्य रूप से एक क्वेरी बनाता है जब तक आप एक विधि को कॉल नहीं करते हैं जहां वह क्वेरी को निष्पादित करेगा और डेटाबेस को हिट करेगा (जैसे जब आप कुछ विधियों को कॉल करते हैं जैसे ->all()
->first()
->lists()
और अन्य)। ऑब्जेक्ट पर वे विधियाँ भी मौजूद Collection
होती हैं, जो कई परिणाम होने पर क्वेरी बिल्डर से वापस मिल सकती हैं। यदि आप सुनिश्चित नहीं हैं कि आप वास्तव में किस वर्ग के साथ काम कर रहे हैं, तो प्रयास करेंvar_dump(User::all())
यह देखने और प्रयोग करने की कि यह वास्तव में किस वर्ग की मदद से लौट रहा हैget_class(...)
)। मैं आपको सलाह देता हूं कि आप संग्रह वर्ग के लिए स्रोत कोड देखें, यह बहुत सरल है। फिर क्वेरी बिल्डर को देखें और फ़ंक्शन नामों में समानताएं देखें और पता करें कि यह वास्तव में डेटाबेस को हिट कब करता है।
first()
, तो परिणाम इससे अलग हैget()
, जिसे!$result
खाली परिणाम के साथ चेक किया जा सकता हैnull