eksempel fra doktrindokument:
INDEX BY-konstruktionen er ikke noget, der direkte oversættes til SQL, men som påvirker objekt- og arrayhydrering. Efter hver FROM og JOIN klausul specificerer du med hvilket felt denne klasse skal indekseres i resultatet. Som standard øges et resultat med numeriske taster, der starter med 0. Med INDEX BY kan du dog angive en hvilken som helst anden kolonne som nøglen til dit resultat, men det giver egentlig kun mening med primære eller unikke felter:
SELECT u.id, u.status, upper(u.name) nameUpper FROM User u INDEX BY u.id
JOIN u.phonenumbers p INDEX BY p.phonenumber
Returnerer en matrix af følgende art, indekseret af både bruger-id og telefonnummer-id:
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)