"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > लारवेल में नीचे की ओर रिक्त मान और गैर-रिक्त मान वाली पंक्तियों को अवरोही क्रम में क्रमबद्ध करना

लारवेल में नीचे की ओर रिक्त मान और गैर-रिक्त मान वाली पंक्तियों को अवरोही क्रम में क्रमबद्ध करना

2024-11-06 को प्रकाशित
ब्राउज़ करें:634

Sorting Rows with Empty Values at the Bottom and Non-Empty Values in Descending Order in Laravel

डेटाबेस के साथ काम करते समय, ऐसी स्थितियों का सामना करना आम बात है जहां कुछ फ़ील्ड खाली या शून्य हो सकते हैं। एक चुनौती जो अक्सर उठती है वह यह है कि रिकॉर्ड को कैसे क्रमबद्ध किया जाए ताकि खाली फ़ील्ड वाली पंक्तियाँ परिणाम सेट के नीचे दिखाई दें, जबकि गैर-रिक्त मान वाली पंक्तियों को सार्थक तरीके से क्रमबद्ध किया जाए (जैसे, अवरोही क्रम)। इस पोस्ट में, मैं आपको दिखाऊंगा कि एक व्यावहारिक उदाहरण का उपयोग करके लारवेल में इसे कैसे प्राप्त किया जाए।

परिदृश्य

मान लें कि आपके पास किसी गतिविधि के लिए प्रतिभागियों की एक तालिका है, और प्रत्येक प्रतिभागी के पास एक Attend_at टाइमस्टैम्प हो भी सकता है और नहीं भी, जो रिकॉर्ड करता है कि प्रतिभागी ने गतिविधि में कब भाग लिया। आप सभी प्रतिभागियों को इस प्रकार क्रमबद्ध करके सूचीबद्ध करना चाहते हैं कि:

  • जिन प्रतिभागियों ने भाग लिया है (अर्थात, भाग खाली नहीं है) सबसे हाल की उपस्थिति के आधार पर क्रमबद्ध होकर सबसे पहले आते हैं।
  • जिन प्रतिभागियों ने भाग नहीं लिया है (अर्थात्, उपस्थित_पर खाली है या शून्य है) वे सबसे अंत में आते हैं।

समस्या

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

return $this
    ->participants()
    ->with('user')
    ->latest('attended_at')
    ->get();

यह प्रतिभागियों को टाइमस्टैम्प के साथ आदेश देगा, लेकिन यह NULL मान को नीचे नहीं ले जाएगा।

समाधान: orderByRaw का उपयोग करना

हम 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();

क्वेरी को तोड़ना

  • orderByRaw('अटेंड_एट शून्य है, अटेंड_एट डीईएससी'):
    • अटेंड_एट शून्य है: यह उन पंक्तियों के लिए सत्य (या 1) लौटाएगा जहां अटेंड_एट शून्य है और अन्यथा गलत (या 0) लौटाएगा। यह प्रभावी रूप से NULL मानों को सबसे नीचे रखता है।
    • Attend_at DESC: NULL मानों को संभालने के बाद, यह शेष पंक्तियों को गैर-रिक्त Attend_at मानों के साथ अवरोही क्रम में क्रमबद्ध करता है, जिसका अर्थ है कि सबसे हाल की उपस्थिति पहले दिखाई जाएगी।

अंतिम आउटपुट

मैप() फ़ंक्शन का उपयोग वांछित संरचना में आउटपुट को प्रारूपित करने के लिए किया जाता है, जिसमें छात्र_आईडी, नाम और स्थिति जैसे फ़ील्ड शामिल होते हैं, और अटेंड_एट टाइमस्टैम्प को मानव-पठनीय प्रारूप या '-' में परिवर्तित किया जाता है यदि यह है खाली।

इस दृष्टिकोण के लाभ

  • प्रदर्शन: यह दृष्टिकोण SQL की सॉर्टिंग क्षमताओं का लाभ उठाता है, जिससे यह बड़े डेटासेट के लिए कुशल बन जाता है।
  • पठनीयता: कच्चे SQL अभिव्यक्ति के साथ orderByRaw() का उपयोग करने से कोड संक्षिप्त और समझने में आसान रहता है।
  • लचीलापन: आप इस तर्क को अन्य क्षेत्रों के आधार पर क्रमबद्ध करने या अधिक जटिल स्थितियों को शामिल करने के लिए आसानी से बढ़ा सकते हैं।

निष्कर्ष

डेटा के साथ काम करते समय लारवेल में NULL या खाली मानों के साथ सॉर्टिंग को संभालना एक सामान्य कार्य है जो हमेशा पूरा नहीं हो सकता है। अटेंड_एट IS NULL, अटेंड_एट DESC जैसे SQL एक्सप्रेशन के साथ orderByRaw() विधि का उपयोग करके, आप आसानी से यह सुनिश्चित कर सकते हैं कि NULL मान वाली पंक्तियाँ बाकी डेटा को सार्थक तरीके से सॉर्ट करते समय नीचे दिखाई देती हैं।

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

हैप्पी कोडिंग!

विज्ञप्ति वक्तव्य इस लेख को पुन: प्रस्तुत किया गया है: https://dev.to/nasrulhazim/sorting-rows-with-empty-values-at-the-bottom-and-non-non-d-empty-values-in-descending- ऑर्डर-इन-लार्वा -2A9?1 यदि कोई उल्लंघन है, तो कृपया इसे हटा दें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3