Doctrine 条令2-查询生成器条件查询。。。如果语句?

Doctrine 条令2-查询生成器条件查询。。。如果语句?,doctrine,doctrine-orm,query-builder,Doctrine,Doctrine Orm,Query Builder,我的问题是博士2。我在用户中有一个状态字段,私有或 公众。我希望能够运行此查询并显示所有注释 其中,仅当userid=当前登录时,status=public和private 用户id(我知道,$loggerUserVarID) 目前,我在得到结果后使用if语句,有没有办法在这个查询中使用if语句?所以,您想返回注释“如果状态为‘public’或所有者ID为$loggeduservard”,对吗 请注意,如果$loggeduservard与所有者匹配,则您并不真正关心状态 查看querybuild

我的问题是博士2。我在用户中有一个状态字段,私有或 公众。我希望能够运行此查询并显示所有注释 其中,仅当userid=当前登录时,status=public和private 用户id(我知道,$loggerUserVarID)


目前,我在得到结果后使用if语句,有没有办法在这个查询中使用if语句?

所以,您想返回注释“如果状态为‘public’或所有者ID为$loggeduservard”,对吗

请注意,如果$loggeduservard与所有者匹配,则您并不真正关心状态

查看querybuilder和dql文档。它们非常清楚地解释了如何组合复杂的where条件

您可能想要的是:

$q = $this->em->createQueryBuilder()
            ->select('c')
            ->from('\Entities\Comments', 'c')
            ->join('c.users', 'u')
            ->where(
                $qb->expr()->orX(
                    $qb->expr()->eq('status','public'),
                    $qb->expr()->eq('u.id',$loggedInUser)
                )
           )
         ->setParameter(1, $loggerUserVarID)
         ->getQuery();

令人恼火的是:一条评论有一个users属性——意味着多个用户被映射到一条评论?那怎么行?评论不能只有一个所有者(用户)吗?你也可以这样做:$ors=$qb->expr()->orX()$ors->add($qb->expr()->like('firstName',$qb->expr()->literal(%john%”))$ors->add($qb->expr()->like('lastName',$qb->expr()->literal(“%john%”))$qb->andWhere($ors);
$q = $this->em->createQueryBuilder()
            ->select('c')
            ->from('\Entities\Comments', 'c')
            ->join('c.users', 'u')
            ->where(
                $qb->expr()->orX(
                    $qb->expr()->eq('status','public'),
                    $qb->expr()->eq('u.id',$loggedInUser)
                )
           )
         ->setParameter(1, $loggerUserVarID)
         ->getQuery();