22

Doctrine2 で getResult() の配列キーの値を変更することは可能ですか?

例:

$qb->select('t.id, t.name')->from('Table', 't');

これを印刷すると、私が望んでいたものではありません。

print_r($qb->getQuery()->getResult());

//Print result: Array ( [0] => Array ( [id] => 20 [name] => Name1 ) [1] => Array ( [id] => 21 [percentagem] => Name2 ) )

私が欲しいのは:

Array ( [20] => Array ( [id] => 20 [name] => Name1 ) [21] => Array ( [id] => 21 [percentagem] => Name2 ) )

提案、ヒントをいただければ幸いです。

4

3 に答える 3

35

私は実際、このことがいかにクールであるかについて非常に満足しています:

$query = $this->getEntityManager()->createQuery('
            SELECT user FROM UserBundle:User user
            INDEX BY user.id
            WHERE user.id = 1
            '
        );

INDEX BY コンストラクトは、SQL に直接変換されるものではありませんが、オブジェクトと配列のハイドレーションに影響を与えます。各 FROM 句と JOIN 句の後に、結果でこのクラスのインデックスを作成するフィールドを指定します。デフォルトでは、結果は 0 から始まる数値キーによってインクリメントされます。ただし、INDEX BY を使用すると、他の列を結果のキーとして指定できますが、実際にはプライマリまたは一意のフィールドでのみ意味があります。

出典: Doctrine ORM 2 Documentation Using INDEX BY

  • WHERE の前に INDEX BY を使用してください
于 2013-03-10T19:24:54.930 に答える