我寻求答案,但我的具体情况。 我需要连续加入Doctrine 2表,依赖于我必须加入两个不同外键的字段的值,这里是我的代码:
$qb = $this->entityManager->createQueryBuilder();
$qb ->select('s')
->from('AppBundle:MyTable', 's')
->join('s.firstJoin', 'o')
->join('s.secondJoin', 'd')
->join('AppBundle:joinedView', 'view', Join::WITH,
"(CASE WHEN (d.secondJoinFK = 3)
THEN view.did = d.secondJoinFK
WHEN (d.secondJoinFK = 2)
THEN view.dvid = d.secondJoinFK END)")
->addSelect('d')
->where('s.endDate IS NULL');
然而,有了这个请求,Symfony告诉我:[Syntax Error] line 0, col 203: Error: Expected Doctrine\ORM\Query\Lexer::T_ELSE, got '='
此外,我不能使用本机查询,因为我使用PagerFanta渲染模板,而PagerFanta需要在输入上有ORM \ Query而不是ORM \ NativeQuery或其他。
不幸的是,我没有选择,必须使用这些先决条件来实现此请求。
先谢谢你的帮助,
答案 0 :(得分:0)
不可能做条件连接之类的事情。您始终需要连接两个表并指定不同的连接条件。
您可以这样做:
->join('AppBundle:joinedView', 'view1', Join::WITH,
"view1.did = 3")
->join('AppBundle:joinedView', 'view2', Join::WITH,
"view2.dvid = 2")
但老实说,我不确定你想要实现的目标。在没有使用某些连接列的条件的情况下连接表似乎有点无意义。