logo

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

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

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

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

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

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

स्क्रॉल

9.12. इवेंट डिस्पैचर — विशिष्ट घटनाओं (Events) के लिए कस्टम कोड

16/10/2025, by Ivan

Menu

Drupal मॉड्यूल विकसित करते समय डेटाबेस क्वेरी चलाना एक सामान्य कार्य है। जहाँ संभव हो, आपको entityQuery का उपयोग करना चाहिए, लेकिन कभी-कभी अधिक जटिल डेटा प्राप्त करने के लिए आपको SQL क्वेरी का उपयोग करना आवश्यक होता है।

आप इस पेज को बुकमार्क कर सकते हैं ताकि आपके पास हमेशा यह "चीट शीट" रहे कि Drupal में MySQL क्वेरीज़ — select, insert, update, delete — कैसे चलाई जाती हैं।

Select

एकल (single) मान प्राप्त करना:

$query = \Drupal::database()->select('node_field_data', 'n');
$query->addField('n', 'nid');
$query->condition('n.title', 'About Us');
$query->range(0, 1);
$nid = $query->execute()->fetchField();

डेटा को array के रूप में प्राप्त करना:

$query = \Drupal::database()->select('node_field_data', 'n');
$query->fields('n', ['nid', 'title']);
$query->condition('n.type', 'page');
$query->range(0, 1);
$vegetable = $query->execute()->fetchAssoc();

आप →fetchObject(), →fetchAll() का उपयोग करके ऑब्जेक्ट के रूप में भी परिणाम प्राप्त कर सकते हैं।

LIKE ऑपरेटर का उपयोग करते हुए क्वेरी:

$query = \Drupal::database()->select('node_field_data', 'n');
$query->fields('n', ['nid', 'title']);
$query->condition('n.type', 'page');
$query->condition('n.title', $query->escapeLike('About') . '%', 'LIKE');
$vegetable = $query->execute()->fetchAllKeyed();

JOIN के साथ Select क्वेरी:

$query = \Drupal::database()->select('node_field_data', 'n');
$query->fields('n', ['nid', 'title']);
$query->addField('u', 'name');
$query->join('users_field_data', 'u', 'u.uid = n.uid');
$query->condition('n.type', 'page');
$vegetable = $query->execute()->fetchAllAssoc('nid');

नीचे अन्य डेटाबेस क्वेरीज़ — insert, update, upsert और delete — के उदाहरण दिए गए हैं। ये क्वेरीज़ कस्टम टेबल्स के साथ काम करने में उपयोगी हो सकती हैं। हालाँकि, कस्टम टेबल्स बनाने से पहले दो बार सोचें — बेहतर होगा कि आप Drupal API या contrib modules का उपयोग करें। लेकिन अगर फिर भी आपको सीधे डेटाबेस पर कस्टम क्वेरी चलानी है, तो नीचे उदाहरण देखें:

Insert

$query = \Drupal::database()->insert('flood');
$query->fields([
  'event',
  'identifier'
]);
$query->values([
  'My event',
  'My identifier'
]);
$query->execute();

आप values() मेथड को कई बार कॉल करके एक साथ कई रिकॉर्ड्स भी जोड़ सकते हैं।

Update

$query = \Drupal::database()->update('flood');
$query->fields([
  'identifier' => 'My new identifier'
]);
$query->condition('event', 'My event');
$query->execute();

Upsert

$query = \Drupal::database()->upsert('flood');
$query->fields([
  'fid',
  'identifier',
]);
$query->values([
  1,
  'My identifier for upsert'
]);
$query->key('fid');
$query->execute();

key() मेथड का उपयोग उस फ़ील्ड का नाम बताने के लिए किया जाता है जिसका उपयोग मौजूदा रिकॉर्ड की पहचान करने के लिए किया जाएगा। आपको condition() लिखने की आवश्यकता नहीं है — key() पर्याप्त है। यह फ़ील्ड अद्वितीय (unique) होनी चाहिए, जैसे nid, uid, tid, fid या अन्य एंटिटी ID। यदि कुंजी (key) मौजूद नहीं है, तो रिकॉर्ड अपडेट करने के बजाय नया रिकॉर्ड जोड़ा जाएगा।

Delete

$query = \Drupal::database()->delete('flood');
$query->condition('event', 'My event');
$query->execute();

बस इतना ही! यदि आपको और उदाहरणों की आवश्यकता है, तो टिप्पणियों में लिखें। अगले ट्यूटोरियल्स में, हम देखेंगे कि Drupal में इन कस्टम डेटाबेस क्वेरीज़ का व्यवहार में उपयोग कैसे किया जाता है।