příklad z doktrínového dokumentu:
Konstrukt INDEX BY není nic, co by se přímo překládalo do SQL, ale co by ovlivnilo hydrataci objektů a polí. Po každé klauzuli FROM a JOIN určíte, podle kterého pole má být tato třída ve výsledku indexována. Ve výchozím nastavení je výsledek zvýšen o číselné klíče začínající 0. Nicméně pomocí INDEX BY můžete určit jakýkoli jiný sloupec jako klíč vašeho výsledku, to však dává smysl pouze u primárních nebo jedinečných polí:
SELECT u.id, u.status, upper(u.name) nameUpper FROM User u INDEX BY u.id
JOIN u.phonenumbers p INDEX BY p.phonenumber
Vrátí pole následujícího druhu, indexované jak ID uživatele, tak ID telefonního čísla:
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)