我在Symfony2 / Doctrine-Environment中遇到以下问题:
类a与类b有关系,但是这种关系不是通过ORM注释或其他任何方式注册的,因为引用的表是可变的。所以我以下列方式加入:
$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);
结果数组现在包含a和b的两个对象(有点像
)array('a1', 'b1', 'a2', 'b2', .... )
)。我可以再次过滤它,但我觉得这不是要走的路。我尝试过不同的水合模式,但这并没有改变任何东西。
有没有办法归还它,所以保留了关联?
我的意思是,如下所示:
array(array('a1', 'b1'), array('a2', 'b2'), ...)
?
答案 0 :(得分:9)
您可以使用标准的ScalarHydrator:
来实现这一目标$query = $this->createQueryBuilder('a')
->select('a')
->addSelect('b')
->leftJoin('My\Bundle\EntityBundle\Entity\OtherClass','b','WITH','a.referenceId=b.id')
->getQuery()
->getResult(\Doctrine\ORM\Query::HYDRATE_SCALAR);