DQLの通常のLEFT JOINで3つのエンティティを選択しています。それらは、結合テーブルを介して関連しており、結合テーブルには、それらのために定義されたエンティティと、注釈付きの関係もあります。 クエリは問題なく実行されますが、結果はフラットな配列として返されます。Doctrine DQL結合からフラットな配列を返します
:私はオブジェクトや配列として水和のいずれか、クエリにgetResult()
を呼び出すと、私はフラットな結果セットを取得
SELECT e1, e2, e3 FROM AppBundle:EntityOne
JOIN AppBundle:JoinEntityOneWithTwo e1_2 WITH e1_2.entity1 = e1.id
JOIN AppBundle:EntityTwo e2 WITH e1_2.entity2 = e2.id
JOIN AppBundle:JoinEntityOneWithThree e1_3 WITH e1_3.entity1 = e1.id
JOIN AppBundle:EntityThree e3 WITH e3.id = e1_3.entity3
WHERE e1.some_field IN ('some','values','in','e1');
:私は、各インデックスの配列要素として3つのエンティティを持つ配列を期待します
array(
/AppBundle/Entity/EntityOne (...),
/AppBundle/Entity/EntityTwo (...),
/AppBundle/Entity/EntityThree (...),
/AppBundle/Entity/EntityOne (...),
/AppBundle/Entity/EntityTwo (...),
/AppBundle/Entity/EntityThree (...),
/AppBundle/Entity/EntityTwo (...),
/AppBundle/Entity/EntityThree (...),
/AppBundle/Entity/EntityOne (...),
)
Iは期待、または多次元アレイがしたい:
Array(
[0] => Array(
[0] /AppBundle/Entity/EntityOne,
[1] /AppBundle/Entity/EntityTwo,
[2] /AppBundle/Entity/EntityThree
),
[1] => . . .
)
結果が行によって関連していません。それらをグループ化できる予測可能な順序もありません。array_chunk()
生成されたSQLは正常に動作します。 DQLは正確な結果を返す - 私が期待するように公式化されていない。私は熱心な負荷に教義(とらえどころのない)のドキュメントを、次の加入しています:
この質問は
Doctrine DQL returns multiple types of entities
と非常によく似ています。しかし、私のテーブル結合が多対しているとして、私の選択順序が異なります多対多。 多くの感謝!この質問の変異体は頼まれた:
Getting Doctrine DQL results the SQL way
私は教義が参加するテーブルを介し積極的なロードをサポートしていないことはかなり驚いています。
は、あなたが選択する必要があり積極的なロードを使用するには、E1だけでなくE1、E2とe3。 – Alsatian
ええ、e1はどのテーブルにも外部キー参照がありません。私は 'e1_2'を選択することで道の一部を得ることができましたが、その後、私は' e3'との関係を失います。 – eggmatters