0

「論理的な」1:1の関係を持つ2つのエンティティがありますが、構成されていません(互いに関連していることを知りません)。

この状況に応じて古いコードがたくさんあるため、この関係を構成することはできません (詳細については以下を参照してください)。

今、私は句を含む単純なSELECTクエリを使用して、この関係を手動で解決しようとしています:LEFT JOIN

SELECT E1 as my_cool_entity_1, E2 as my_cool_entity_2
FROM Namespace\Of\Entity1 E1
LEFT JOIN Namespace\Of\Entity2 E2
WITH E2.someColumn = E1.someOtherColumn

私の場合、一致する行が 1 つだけありE1、結合に一致する行が 1 つだけありE2ます。どういうわけか、私はDoctrineを以前にそのように使用したことがありますが、どこでどのように使用したか思い出せません。期待される結果は、次のような配列です。

[0 => [
    "my_cool_entity_1" => (Instance of E1),
    "my_cool_entity_2" => (Instance of E2)
]]

代わりに、配列は次のようになります。

[0 => [
        "my_cool_entity_1" => (Instance of E1)
    ], 
 1 => [
        "my_cool_entity_2" => (Instance of E2)
]]

Doctrine が期待どおりに配列を水和させるにはどうすればよいですか? 前もって感謝します!

注: この 2 つのエンティティ間の関係を定義できないと書きました。これは、リレーションが定義されている場合、Doctrine では E1 を保存するときに to のインスタンスを割り当てる必要があるためです。ただし私の古いコードでは、関連するIDのみを割り当てています。したがって、Doctrine はまったく無視し、制約エラーを引き起こします。E2E1E2

4

1 に答える 1

1

関係の定義がないと、教義はそれがoneToOne関係であることを知ることができないため、結果は常にコレクションになります。これを達成するには、独自のハイドレーターを作成する必要があります。

于 2012-10-22T22:17:15.223 に答える