डेटाबेस के साथ काम करते समय, ऐसी स्थितियों का सामना करना आम बात है जहां कुछ फ़ील्ड खाली या शून्य हो सकते हैं। एक चुनौती जो अक्सर उठती है वह यह है कि रिकॉर्ड को कैसे क्रमबद्ध किया जाए ताकि खाली फ़ील्ड वाली पंक्तियाँ परिणाम सेट के नीचे दिखाई दें, जबकि गैर-रिक्त मान वाली पंक्तियों को सार्थक तरीके से क्रमबद्ध किया जाए (जैसे, अवरोही क्रम)। इस पोस्ट में, मैं आपको दिखाऊंगा कि एक व्यावहारिक उदाहरण का उपयोग करके लारवेल में इसे कैसे प्राप्त किया जाए।
मान लें कि आपके पास किसी गतिविधि के लिए प्रतिभागियों की एक तालिका है, और प्रत्येक प्रतिभागी के पास एक Attend_at टाइमस्टैम्प हो भी सकता है और नहीं भी, जो रिकॉर्ड करता है कि प्रतिभागी ने गतिविधि में कब भाग लिया। आप सभी प्रतिभागियों को इस प्रकार क्रमबद्ध करके सूचीबद्ध करना चाहते हैं कि:
डिफ़ॉल्ट रूप से, लारवेल की नवीनतम() विधि किसी दिए गए कॉलम के अनुसार अवरोही क्रम में रिकॉर्ड को क्रमबद्ध करती है। हालाँकि, यह उस मामले को नहीं संभालता जहां कुछ रिकॉर्ड में शून्य या खाली मान हैं। यदि आप बस उपयोग करते हैं:
return $this ->participants() ->with('user') ->latest('attended_at') ->get();
यह प्रतिभागियों को टाइमस्टैम्प के साथ आदेश देगा, लेकिन यह NULL मान को नीचे नहीं ले जाएगा।
हम orderByRaw() विधि का उपयोग करके वांछित सॉर्टिंग प्राप्त कर सकते हैं। यह हमें कच्चे SQL अभिव्यक्तियों का उपयोग करके कस्टम सॉर्टिंग तर्क लिखने की अनुमति देता है। इस मामले में, हम अटेंड_एट शून्य है या नहीं इसके आधार पर आदेश देंगे, और फिर गैर-शून्य मानों के लिए अवरोही क्रम में अटेंडेड_एट द्वारा आदेश देंगे।
यहां बताया गया है कि आप इस क्वेरी को लारवेल में कैसे लिख सकते हैं:
return $this ->participants() ->with('user') ->orderByRaw('attended_at IS NULL, attended_at DESC') ->get() ->map(function (ActivityParticipant $participant) { return [ 'metric_number' => data_get($participant, 'user.student_id'), 'name' => data_get($participant, 'user.name'), 'status' => data_get($participant, 'status'), 'attended_at' => data_get($participant, 'attended_at', '-'), ]; })->toArray();
मैप() फ़ंक्शन का उपयोग वांछित संरचना में आउटपुट को प्रारूपित करने के लिए किया जाता है, जिसमें छात्र_आईडी, नाम और स्थिति जैसे फ़ील्ड शामिल होते हैं, और अटेंड_एट टाइमस्टैम्प को मानव-पठनीय प्रारूप या '-' में परिवर्तित किया जाता है यदि यह है खाली।
डेटा के साथ काम करते समय लारवेल में NULL या खाली मानों के साथ सॉर्टिंग को संभालना एक सामान्य कार्य है जो हमेशा पूरा नहीं हो सकता है। अटेंड_एट IS NULL, अटेंड_एट DESC जैसे SQL एक्सप्रेशन के साथ orderByRaw() विधि का उपयोग करके, आप आसानी से यह सुनिश्चित कर सकते हैं कि NULL मान वाली पंक्तियाँ बाकी डेटा को सार्थक तरीके से सॉर्ट करते समय नीचे दिखाई देती हैं।
यह विधि उन परिदृश्यों में विशेष रूप से उपयोगी है जहां आप उपस्थिति से निपट रहे हैं, जैसा कि इस उदाहरण में दिखाया गया है, लेकिन इसे कई अन्य स्थितियों में भी लागू किया जा सकता है जहां कुछ डेटा फ़ील्ड गायब हो सकते हैं। इस दृष्टिकोण के साथ, आप अपने उपयोगकर्ताओं को अपने एप्लिकेशन में रिकॉर्ड का स्पष्ट और अधिक सहज प्रदर्शन प्रदान कर सकते हैं।
हैप्पी कोडिंग!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3