ví dụ từ tài liệu giáo lý:
Cấu trúc INDEX BY không có gì trực tiếp dịch sang SQL nhưng nó ảnh hưởng đến quá trình hydrat hóa đối tượng và mảng. Sau mỗi mệnh đề FROM và JOIN, bạn chỉ định trường mà lớp này sẽ được lập chỉ mục trong kết quả. Theo mặc định, kết quả được tăng lên bởi các khóa số bắt đầu bằng 0. Tuy nhiên, với INDEX BY, bạn có thể chỉ định bất kỳ cột nào khác làm khóa kết quả của mình, mặc dù vậy, nó chỉ thực sự có ý nghĩa với các trường chính hoặc duy nhất:
SELECT u.id, u.status, upper(u.name) nameUpper FROM User u INDEX BY u.id
JOIN u.phonenumbers p INDEX BY p.phonenumber
Trả về một mảng thuộc loại sau, được lập chỉ mục bởi cả user-id rồi đến 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)