फ़ील्ड्स (Fields)
फ़ील्ड जोड़ना
Select क्वेरी में फ़ील्ड जोड़ने के लिए addField() मेथड का उपयोग करें:
$title_field = $query->addField('n', 'title', 'my_title');
ऊपर दिया गया कोड क्वेरी को निर्देश देगा कि वह टेबल के उपनाम «n» से «title» फ़ील्ड चुने और उसे «my_title» उपनाम दे। यदि उपनाम निर्दिष्ट नहीं किया गया है, तो वह स्वतः निर्मित हो जाएगा। अधिकांश मामलों में उत्पन्न उपनाम फ़ील्ड का नाम ही होगा। इस उदाहरण में यह «title» होगा। यदि यह उपनाम पहले से मौजूद है, तो उपनाम «n_title» होगा। यदि वह भी मौजूद है, तो उपनाम में काउंटर जोड़ दिया जाएगा, जब तक कि कोई अप्रयुक्त उपनाम न मिल जाए, जैसे «n_title_2»।
ध्यान दें कि यदि आप स्वयं क्वेरी बना और भर रहे हैं और उपनाम निर्दिष्ट नहीं करते हैं, और डिफ़ॉल्ट उपनाम उपलब्ध नहीं है, तो आपके कोड में लगभग निश्चित रूप से त्रुटि है। हालांकि, यदि आप hook_query_alter() का इम्प्लीमेंटेशन लिख रहे हैं, तो आप यह सुनिश्चित नहीं कर सकते कि कौन से उपनाम पहले से उपयोग में हैं, इसलिए आपको हमेशा उत्पन्न उपनाम का उपयोग करना चाहिए।
कई फ़ील्ड्स जोड़ना
कई फ़ील्ड्स चुनने के लिए, आवश्यक क्रम में कई बार addField() कॉल करें। ध्यान दें कि अधिकांश मामलों में फ़ील्ड्स का क्रम मायने नहीं रखना चाहिए, और यदि रखता है, तो संभावना है कि मॉड्यूल की बिज़नेस लॉजिक में कोई खामी है।
वैकल्पिक रूप से आप एक साथ कई फ़ील्ड्स जोड़ने के लिए fields() मेथड का उपयोग कर सकते हैं।
$query->fields('n', ['nid', 'title', 'created', 'uid']);
ऊपर दिया गया मेथड addField() को चार बार कॉल करने के बराबर है, प्रत्येक फ़ील्ड के लिए एक बार। हालाँकि, fields() किसी फ़ील्ड के लिए उपनाम निर्दिष्ट करने का समर्थन नहीं करता। यह स्वयं क्वेरी ऑब्जेक्ट लौटाता है, ताकि मेथड को चेन में उपयोग किया जा सके, लेकिन यह कोई उत्पन्न उपनाम वापस नहीं करता। यदि आपको उत्पन्न उपनाम जानने की आवश्यकता है, तो addField() या getFields() का उपयोग करें।
fields() को फ़ील्ड्स की सूची दिए बिना कॉल करने से क्वेरी «SELECT *» उत्पन्न करेगी।
$query->fields('n');
यह «n.*» को क्वेरी के फ़ील्ड्स की सूची में शामिल करेगा। ध्यान दें कि उपनाम उत्पन्न नहीं होंगे। यदि SELECT* का उपयोग करने वाली टेबल में कोई फ़ील्ड है जो किसी अन्य टेबल से सीधे भी चुना गया है, तो परिणाम सेट में नाम टकराव हो सकता है। इस स्थिति में परिणाम सेट केवल समान नाम वाले फ़ील्ड्स में से एक ही रखेगा। इसी कारण SELECT* का उपयोग करने की अनुशंसा नहीं की जाती।
सिर्फ एक फ़ील्ड लौटाना (fetchField का उपयोग करके)
क्वेरी से केवल एक फ़ील्ड लौटाने के लिए fetchField मेथड का उपयोग करें, जैसे कि नीचे दिया गया उदाहरण (थोड़ा साधारण उदाहरण):
$query = $connection->select('node', 'n');
$query->condition('n.nid', 123);
$query->addField('n', 'title');
$result = $query->execute();
return $result->fetchField();