लार्वा एलोकेंट रिलेशनशिप के लिए ट्रिक्स

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


सबसे पहले हम app \ सुविधा के तहत एक नया मॉडल बनाते हैं:

b45e29b9125c2ab565b5526442437686

फिर हम सभी मॉडलों के लिए हमारी नई ConvenienceModel से विरासत जाने:

b45e29b9125c2ab565b5526442437686

रिश्तों के साथ अपने स्वयं के कार्यों को मिलाएं

यदि आप कनेक्टेड मॉडल प्राप्त करना चाहते हैं, तो आप उन्हें कॉल करने के लिए मानक सिंटैक्स का उपयोग करते हैं:

b45e29b9125c2ab565b5526442437686

यदि आप अब अपना स्वयं का व्यावसायिक तर्क जोड़ते हैं, तो आप ऊँचे (कम) ऊँट केस नोटेशन का उपयोग करना पसंद करते हैं:

b45e29b9125c2ab565b5526442437686

हम दोनों वेरिएंट के सिंटैक्स को मानकीकृत करना चाहते हैं। ऐसा करने के लिए, हम जादू विधि जोड़ने __call ConvenienceModel को:

b45e29b9125c2ab565b5526442437686

इसलिए यह कॉल ऊपर के उदाहरण में भी संभव है:

b45e29b9125c2ab565b5526442437686

खाली वस्तुओं की जाँच करें

यदि आप किसी व्यक्तिगत पते के लिए देश का नाम आउटपुट करना चाहते हैं, तो आपको अक्सर निम्नलिखित कोड दिखाई देगा:

b45e29b9125c2ab565b5526442437686

इसे रोकने के लिए, हम स्ट्रिंगहेल्पर लाइब्रेरी को शामिल करते हैं और यदि कोई मॉडल नहीं मिलता है तो खाली वर्ग की एक विशेष वस्तु को खाली लौटा देते हैं:

b45e29b9125c2ab565b5526442437686

इसका मतलब है कि कॉल सफल है (इस उदाहरण में, यदि कुछ पाया जाता है, तो देश का नाम आउटपुट होता है, अन्य सभी मामलों में एक खाली स्ट्रिंग)।

b45e29b9125c2ab565b5526442437686

अगर हम इस मामले को भी कवर करना चाहते हैं कि आईडी 42 वाला उपयोगकर्ता भी मौजूद नहीं है, तो हम इसके लिए एक छोटा हेल्पर फंक्शन भी बनाएंगे:

b45e29b9125c2ab565b5526442437686

निम्न कॉल इस प्रकार एक खाली स्ट्रिंग बचाता है, भले ही उपयोगकर्ता बिल्कुल भी मौजूद न हो:

b45e29b9125c2ab565b5526442437686

आसानी से traverse n: m संबंध

अंत में, हम निम्नलिखित कोड को सरल बनाना चाहते हैं:

b45e29b9125c2ab565b5526442437686

इसके लिए हम कस्टम संग्रह की संभावना का उपयोग करते हैं। हम पहले सुविधा मॉडल का विस्तार कर रहे हैं:

b45e29b9125c2ab565b5526442437686

फिर हम ऐप\Helpers\ConvenienceCollection.php फ़ाइल बनाते हैं, जो यह सुनिश्चित करता है कि संग्रह के लिए अज्ञात फ़ंक्शन को कॉल करने से संग्रह में सभी आइटम के लिए फ़ंक्शन निष्पादित होता है:

b45e29b9125c2ab565b5526442437686

इसलिए हम निम्नलिखित कोड का उपयोग व्यक्ति के सभी माता-पिता के सभी पते के सभी देशों के सभी नामों के आउटपुट के लिए कर सकते हैं:

b45e29b9125c2ab565b5526442437686

लेकिन निम्नलिखित की तरह कॉल भी संभव है:

b45e29b9125c2ab565b5526442437686

कई कॉलमों के आधार पर छाँटें

निम्नलिखित कॉल केवल स्थान के आधार पर क्रमित होती है, हालाँकि संभवतः वह वांछित नहीं था:

b45e29b9125c2ab565b5526442437686

कई स्तंभों के अनुसार छांटने में सक्षम करने के लिए, हम अपनी सुविधा का विस्तार कर रहे हैं:

b45e29b9125c2ab565b5526442437686

इसके साथ हम कई कॉलमों के अनुसार संग्रह को सॉर्ट कर सकते हैं:

b45e29b9125c2ab565b5526442437686

मानक छँटाई

हम एक और सहायक फ़ंक्शन के साथ सुविधा का विस्तार कर रहे हैं:

b45e29b9125c2ab565b5526442437686

अब आप प्रत्येक मॉडल को एक व्यक्तिगत मानक छँटाई फ़ंक्शन दे सकते हैं:

b45e29b9125c2ab565b5526442437686

इसके साथ हम एक संग्रह को सॉर्ट कर सकते हैं:

b45e29b9125c2ab565b5526442437686

वस्तु नाम

प्रत्येक मॉडल getLabel विधि को लागू करता है (getName मॉडल के आधार पर भिन्न होता है):

b45e29b9125c2ab565b5526442437686

इससे आप किसी ऑब्जेक्ट का नाम जल्दी और आसानी से प्रदर्शित कर सकते हैं। आप तब सुविधाबैंकलेक्शन में सॉर्टबेलबेल हेल्पर विधि को लागू कर सकते हैं:

b45e29b9125c2ab565b5526442437686

खाली परिणाम

यदि कोई मध्यवर्ती चरण खाली है, तो लारवेल पहले कार्य करता है () और अंतिम () आमतौर पर शून्य लौटता है। इसलिए हम getFirst () और getLast () का परिचय देते हैं ताकि निम्नलिखित कॉल हमेशा सफल हो:

b45e29b9125c2ab565b5526442437686

इसके साथ ही हम एक __empty_helper को वापस देते हैं जिसे __x पहचानता है:

b45e29b9125c2ab565b5526442437686

वापस