教義文書からの例:
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
次の種類の配列を返します。user-idと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)