logo

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - नया लेआउट बिल्डर अनुभव❗

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - स्टाइलिश, कस्टमाइज़ेबल ब्लॉक टाइप्स: स्लाइडशो, टैब्स, कार्ड्स, एकॉर्डियन्स और कई अन्य। बैकग्राउंड, DOM बॉक्स, जावास्क्रिप्ट प्लगइन्स के लिए बिल्ट-इन सेटिंग्स। आज ही लेआउट बिल्डिंग का भविष्य अनुभव करें।

डेमो EBT मॉड्यूल्स EBT मॉड्यूल्स डाउनलोड करें

❗एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - नया पैराग्राफ्स अनुभव

एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - एनालॉजिकल पैराग्राफ आधारित मॉड्यूल्स का सेट।

डेमो EPT मॉड्यूल्स EPT मॉड्यूल्स डाउनलोड करें

स्क्रॉल
01/10/2025, by Ivan

Menu

किसी दिए गए फ़ील्ड पर ग्रुप करने के लिए groupBy() मेथड का उपयोग करें।

$query->groupBy('uid');

ऊपर दिया गया कोड क्वेरी को uid फ़ील्ड पर ग्रुप करने का निर्देश देगा। ध्यान दें कि यहाँ फ़ील्ड का नाम वही उपनाम (alias) होना चाहिए जो addField() या addExpression() मेथड्स द्वारा बनाया गया हो। इसलिए अधिकतर मामलों में आप इन मेथड्स से लौटाए गए मान का उपयोग करेंगे ताकि सही उपनाम का उपयोग हो सके।

किसी फ़ील्ड (जैसे uid) पर ग्रुप की गई पंक्तियों की संख्या प्राप्त करने के लिए, आप इस प्रकार कर सकते हैं:

$query->addExpression('count(uid)', 'uid_node_count');

कई फ़ील्ड्स पर ग्रुप करने के लिए, बस groupBy() को कई बार वांछित क्रम में कॉल करें।

Having

आप एग्रीगेटेड मानों के लिए एक शर्त जोड़ सकते हैं।

$query->having('COUNT(uid) >= :matches', [':matches' => $limit]);

इस उदाहरण में, वे केस मिलेंगे जहाँ uid की संख्या $limit से अधिक या बराबर है। ध्यान दें कि having का पहला पैरामीटर डेटाबेस में भेजने से पहले फ़िल्टर नहीं होता, इसलिए उपयोगकर्ता मानों को दूसरे पैरामीटर के माध्यम से पास करना चाहिए।

groupBy और having के उदाहरण

निम्न कोड प्रत्येक UID पर नोड्स की संख्या गिनता है:

$query = $connection->select('node', 'n')
  ->fields('n', ['uid']);
$query->addExpression('count(uid)', 'uid_node_count');
$query->groupBy("n.uid");
$query->execute();

निम्न कोड ब्लॉक पिछले उदाहरण को लेता है और परिणामों को केवल उन्हीं UIDs तक सीमित करता है जिनमें कम से कम 2 रिकॉर्ड्स हैं:

$query = $connection->select('node', 'n')
    ->fields('n',['uid']);
$query->addExpression('count(uid)', 'uid_node_count');
$query->groupBy("n.uid");
$query->having('COUNT(uid) >= :matches', [':matches' => 2]);
$results = $query->execute();