2012-10-16 1 views
0

"논리"1 : 1 관계가있는 엔티티가 두 개 있지만 구성되지 않았습니다 (각 엔티티와 관련이 있다는 것을 모릅니다. 다른).Doctrine2를 사용하여 예기치 않은 결과를 초래하는 정의 된 관계가없는 여러 엔티티 간의 조인

이 상황에 따라 이전 코드가 많기 때문에이 관계를 구성 할 수 없습니다 (자세한 설명은 아래 참조).

지금, 나는 수동으로 LEFT JOIN 절을 간단한 SELECT 쿼리를 사용하여이 관계를 해결하기 위해 노력하고있어 : 내 경우

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 

,이 정확히 하나 개의 행 일치 E1와 하나의 행이 (가)에 가입 일치 E2. 어쨌든, 나는 그런 식으로 교리를 더 일찍 사용 했었지만, 나는 어디에서 어떻게 기억하지 못합니다. 예상 결과는이 같은 배열 :

[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) 
]] 

어떻게 교리 내가 그것을 기대하고 있습니다로 배열 수분을 만들 수 있습니까? 미리 감사드립니다!

참고 :이 두 엔티티 간의 관계를 정의 할 수 없다고 썼습니다. 내 나이가 코드를하지만, 난 단지 관련 ID를 할당하고있어, -의 관계가 정의되어있는 경우, 교리는 E1을 저장할 때 E1예를 E2를 할당 할 필요 때문이다. 따라서 Doctrine은 E2을 전혀 무시하고 제약 조건 오류를 발생시킵니다.

답변

1

관계의 정의가없는 doctrine은 oneToOne 관계라는 것을 알 수 없으므로 결과는 항상 컬렉션이됩니다. 이를 달성하기 위해 자신의 하이드레이트 레이터를 써야합니다.

관련 문제