我在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);
Run Code Online (Sandbox Code Playgroud)
结果数组现在包含a和b的两个对象(有点像
array('a1', 'b1', 'a2', 'b2', .... )
Run Code Online (Sandbox Code Playgroud)
).我可以再次过滤它,但我觉得这不是要走的路.我尝试过不同的水合模式,但这并没有改变任何东西.
有没有办法归还它,所以保留了关联?
我的意思是这样的,如下所示:
array(array('a1', 'b1'), array('a2', 'b2'), ...)
Run Code Online (Sandbox Code Playgroud)
?
您可以使用标准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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2114 次 |
最近记录: |