logo

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

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

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

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

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

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

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

Menu

डायनामिक क्वेरी में WHERE क्लॉज़ जोड़ने के लिए condition() मेथड का उपयोग करें:

$query->condition('bundle', 'article', '=');

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

Condition पैरामीटर्स

condition() मेथड तीन पैरामीटर्स स्वीकार करता है:

  • $field - तुलना के लिए फ़ील्ड (अनिवार्य)।
  • $value - तुलना के लिए मान (वैकल्पिक, डिफ़ॉल्ट NULL)।
  • $operator - तुलना का ऑपरेटर (वैकल्पिक, डिफ़ॉल्ट ‘=’)।

समर्थित ऑपरेटर्स

सामान्य तुलना ऑपरेटर्स '=', '<>', '<', '<=', '>', '>=' सभी समर्थित डेटाबेस प्रकारों में काम करते हैं।

IN और NOT IN का उपयोग

IN और NOT IN ऑपरेटर्स $value में एक ऐरे स्वीकार करते हैं और फ़ील्ड के मान की तुलना उस ऐरे के मानों से करते हैं।

$users = [2,5,17,22];
$query->condition('uid', $users, 'IN');

इस उदाहरण में क्वेरी वे रिकॉर्ड लौटाएगी जिनमें uid का मान 2, 5, 17 या 22 है।

BETWEEN और NOT BETWEEN का उपयोग

BETWEEN और NOT BETWEEN ऑपरेटर्स तुलना के लिए दो मानों का ऐरे स्वीकार करते हैं।

$query->condition('count', [5,10], 'BETWEEN');

इस उदाहरण में क्वेरी 5 से 10 तक की गिनती वाले रिकॉर्ड्स लौटाएगी।

IS NULL, IS NOT NULL, EXISTS और NOT EXISTS का उपयोग

परंपरा से, निम्न का उपयोग करें, न कि condition() मेथड के साथ:

$query->isNull($field);
$query->isNotNull($field);
$query->exists($field);
$query->notExists($field);

हालाँकि कोई शर्त जैसे $query->condition($field, NULL, 'IS NOT NULL'); काम कर सकती है, लेकिन ऊपर दी गई परंपरा अनुशंसित है।

अन्य ऑपरेटर्स

अन्य ऑपरेटर्स, जैसे BINARY या किसी विशेष डेटाबेस सिस्टम के विशेष ऑपरेटर्स, काम कर भी सकते हैं और नहीं भी। जब आप ऐसे मॉड्यूल लिख रहे हों जिन्हें विभिन्न डेटाबेस सिस्टम्स में उपयोग किया जा सकता है, तो इस बात का ध्यान रखें।

एकाधिक Conditions का उपयोग

आप क्वेरी को और अधिक फ़िल्टर करने के लिए कई condition() मेथड्स जोड़ सकते हैं।

$query->condition('bundle', 'article', '=');
$query->condition('status', 1, '=');

यदि कई condition() मौजूद हैं, जैसा कि ऊपर के उदाहरण में है, तो किसी रिकॉर्ड को क्वेरी परिणाम में आने के लिए सभी शर्तें पूरी होनी चाहिए (यानी शर्तें AND के साथ जोड़ी जाती हैं)।

टिप: केवल OR शर्तों वाला क्वेरी प्राप्त करने के लिए, एक orConditionGroup का उपयोग करें।

Condition समूह

Condition समूहों का उपयोग क्वेरी के WHERE क्लॉज़ में अधिक जटिल अभिव्यक्तियाँ (जैसे OR) बनाने के लिए किया जा सकता है। Condition समूहों के दो प्रकार होते हैं:

  • orConditionGroup - OR से जुड़े हुए कंडीशन्स का ऑब्जेक्ट लौटाता है।
  • andConditionGroup - AND से जुड़े हुए कंडीशन्स का ऑब्जेक्ट लौटाता है।

Condition समूह एक ऑब्जेक्ट लौटाते हैं, जिसे फिर क्वेरी में शर्त के रूप में जोड़ा जा सकता है।

// orConditionGroup बनाएं
$orGroup = $query->orConditionGroup()
  ->condition('promoted', 1)
  ->condition('uid', [2,4,7,22], 'IN');
  
// समूह को क्वेरी में जोड़ें।
$query->condition($orGroup);

इस उदाहरण में promoted और uid के लिए शर्तें WHERE क्लॉज़ में OR के साथ ग्रुप होकर जोड़ी जाएँगी। यह निम्न WHERE उत्पन्न करेगा:

WHERE (promoted = 1 OR uid IN (2,4,7,22))

आवश्यकता पड़ने पर आप कई orConditionGroup और andConditionGroup जोड़ सकते हैं। Condition समूहों को नेस्ट भी किया जा सकता है ताकि WHERE क्लॉज़ में अधिक जटिल लॉजिक बनाया जा सके।

उदाहरण के लिए निम्न WHERE क्लॉज़ दिया गया है:

WHERE (a = 1 OR b = 1) AND ((c = 1 AND d = 1) OR (e = 1))

इसे Condition समूहों के साथ इस प्रकार लिखा जा सकता है:

$orGroup1 = $query->orConditionGroup()
  ->condition('a', 1)
  ->condition('b', 1);
  
$andGroup1 = $query->andConditionGroup()
  ->condition('c', 1)
  ->condition('d', 1);
  
$orGroup2 = $query->orConditionGroup()
  ->condition($andGroup1)
  ->condition('e', 1);
  
$query->condition($orGroup1);
$query->condition($orGroup2);