सिद्धांत दस्तावेज़ से उदाहरण:
INDEX BY निर्माण कुछ भी नहीं है जो सीधे SQL में अनुवाद करता है लेकिन यह ऑब्जेक्ट और सरणी हाइड्रेशन को प्रभावित करता है। प्रत्येक FROM और JOIN क्लॉज के बाद आप निर्दिष्ट करते हैं कि परिणाम में इस वर्ग को किस क्षेत्र द्वारा अनुक्रमित किया जाना चाहिए। डिफ़ॉल्ट रूप से एक परिणाम 0 से शुरू होने वाली संख्यात्मक कुंजियों द्वारा बढ़ाया जाता है। हालांकि INDEX BY के साथ आप अपने परिणाम की कुंजी के रूप में किसी अन्य कॉलम को निर्दिष्ट कर सकते हैं, यह वास्तव में केवल प्राथमिक या अद्वितीय फ़ील्ड के साथ ही समझ में आता है:
SELECT u.id, u.status, upper(u.name) nameUpper FROM User u INDEX BY u.id
JOIN u.phonenumbers p INDEX BY p.phonenumber
उपयोगकर्ता-आईडी और फिर फ़ोननंबर-आईडी दोनों द्वारा अनुक्रमित, निम्न प्रकार की एक सरणी देता है:
array
0 =>
array
1 =>
object(stdClass)[299]
public '__CLASS__' => string 'Doctrine\Tests\Models\CMS\CmsUser' (length=33)
public 'id' => int 1
..
'nameUpper' => string 'ROMANB' (length=6)
1 =>
array
2 =>
object(stdClass)[298]
public '__CLASS__' => string 'Doctrine\Tests\Models\CMS\CmsUser' (length=33)
public 'id' => int 2
...
'nameUpper' => string 'JWAGE' (length=5)