我寻求答案,但在我的特定情况下进行了任何答案。我需要使用学说2加入contintinally表,取决于我必须在两个不同的外键上加入的字段的价值,这是我的代码:
$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 DoctrineORMQueryLexer::T_ELSE, got '='
此外,我无法使用本机查询,因为我使用Pagerfanta进行渲染模板,而Pagerfanta需要在输入上有一个ORM 查询,而不是ORM bativeQuery或其他。
不幸的是,我没有选择,必须使用这些先决条件来实施此请求。
感谢您的帮助,
不可能做类似条件联接的事情。您始终需要加入两个表并指定不同的加入条件。
您可以做这样的事情:
->join('AppBundle:joinedView', 'view1', Join::WITH,
"view1.did = 3")
->join('AppBundle:joinedView', 'view2', Join::WITH,
"view2.dvid = 2")
,但老实说,我不确定您要实现什么目标。连接桌子没有条件使用一些连接列的条件似乎有点毫无意义。