条件标记在Doctrine2上加入表



我寻求答案,但在我的特定情况下进行了任何答案。我需要使用学说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")

,但老实说,我不确定您要实现什么目标。连接桌子没有条件使用一些连接列的条件似乎有点毫无意义。

相关内容

  • 没有找到相关文章