laravel - लार्वेल में गैर-कुंजी कॉलम फ़ील्ड के लिए अलग-अलग मान कैसे प्राप्त करें?




eloquent builder (4)

Eloquent में आप इस तरह से पूछ सकते हैं:

$users = User::select('name')->distinct()->get();

यह काफी आसान हो सकता है लेकिन यह नहीं पता कि कैसे करें।

मेरे पास एक सारणी है जो किसी विशेष गैर-कुंजी कॉलम फ़ील्ड के लिए मानों को दोहरा सकती है। मैं क्वेरी बिल्डर या एलोक्वेंट का उपयोग करके एक SQL क्वेरी कैसे लिखूं जो पंक्तियों को उस कॉलम के लिए अलग-अलग मानों के साथ लाएगा?

ध्यान दें कि मैं केवल उस कॉलम को नहीं ला रहा हूं, यह अन्य कॉलम मानों के संयोजन के साथ है, इसलिए distinct() वास्तव में काम नहीं कर सकता है। तो सवाल यह है कि मूल रूप से उस कॉलम को निर्दिष्ट करने के लिए कैसे किया जा सकता है जिसे मैं किसी क्वेरी में अलग करना चाहता हूं, जो कि distinct() कोई पैरामीटर स्वीकार नहीं करता है?


आपको groupby उपयोग करना चाहिए। क्वेरी बिल्डर में आप इसे इस तरह से कर सकते हैं:

$users = DB::table('users')
            ->select('id','name', 'email')
            ->groupBy('name')
            ->get();

ध्यान दें कि groupBy उपरोक्त उपयोग के रूप में पोस्टग्रेज़ के लिए काम नहीं करेगा।

distinct का उपयोग करना शायद एक बेहतर विकल्प है - उदाहरण के लिए $users = User::query()->distinct()->get();

यदि आप query उपयोग करते हैं तो आप अनुरोध किए गए सभी कॉलम का चयन कर सकते हैं।


भाषण में आप इसका उपयोग कर सकते हैं

$users = User::select('name')->groupBy('name')->get()->toArray() ;

समूह वास्तव में अलग-अलग मूल्यों को ला रहा है, वास्तव में समूह द्वारा समान मूल्यों को वर्गीकृत किया जाएगा, ताकि हम उन पर कुल कार्यों का उपयोग कर सकें। लेकिन इस परिदृश्य में हमारे पास कोई कुल कार्य नहीं है, हम केवल उस मूल्य का चयन कर रहे हैं जिसके परिणामस्वरूप अलग-अलग मूल्य होंगे