2014-09-04 7 views
5

Mam następujący problem w Symfony2/doctrine środowisk:SQL/Doctrine: getResult w leftJoin zwraca obiekt i obiekt odwołanie jako 2 wpisy w tablicy

klasy A ma związek z klasy B, jednak relacja ta nie jest rejestrowana za pomocą adnotacji ORM ani czegokolwiek innego, ponieważ przywoływana tabela jest zmienna. Tak więc przystąpić w następujący sposób:

$query = $this->createQueryBuilder('a') 
     ->select('a') 
     ->addSelect('b') 
     ->leftJoin('My\Bundle\EntityBundle\Entity\OtherClass','b',\Doctrine\ORM\Query\Expr\Join::WITH,'a.referenceId=b.id') 
     ->getQuery()->getResult($hydrationMode); 

Otrzymana matryca zawiera teraz zarówno przedmioty A i B (w pewnym sensie jak

array('a1', 'b1', 'a2', 'b2', ....) 

). Mógłbym przefiltrować przez to jeszcze raz, ale czuję, że to nie jest droga. Próbowałem różnych trybów Hydration, ale to niczego nie zmieniło.

Czy istnieje sposób, aby go zwrócić, więc stowarzyszenie jest zachowane?

Rozumiem przez to sth jak poniżej:

array(array('a1', 'b1'), array('a2', 'b2'), ...) 

?

Odpowiedz

9

Można to osiągnąć za pomocą standardowego ScalarHydrator:

+0

działa jak marzenie! Z jakiegoś powodu nie próbowałem HYDRATE_SCALAR. –