voorbeeld uit doctrinedocument:
De constructie INDEX BY is niets dat direct in SQL wordt vertaald, maar dat van invloed is op de hydratatie van objecten en arrays. Na elke FROM- en JOIN-component specificeert u met welk veld deze klasse moet worden geïndexeerd in het resultaat. Standaard wordt een resultaat verhoogd met numerieke toetsen die beginnen met 0. Met INDEX BY kunt u echter een andere kolom specificeren als de sleutel van uw resultaat, maar dit heeft alleen zin met primaire of unieke velden:
SELECT u.id, u.status, upper(u.name) nameUpper FROM User u INDEX BY u.id
JOIN u.phonenumbers p INDEX BY p.phonenumber
Retourneert een array van de volgende soort, geïndexeerd door zowel user-id als phonenumber-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)