使用 doctrine query builder 检查值是否在两列之一中

Check if a value is in one of two columns with doctrine query builder

我正在尝试构建一个查询来检查实体 Project 并检查两列 project_ownerproject_contributor,其中项目贡献者是多对一关系。

我试图进行的查询是这样的(在项目实体存储库中):

return $this->createQueryBuilder('p')
     ->where('p.project_owner = :val')
     ->orWhere(':val in p.project_contributors')
     ->setParameter('val', $value)
     ->getQuery()
     ->getResult()
;

我收到的错误如下:

[Syntax Error] line 0, col 75: Error: Expected Doctrine\ORM\Query\Lexer::T_OPEN_PARENTHESIS, got 'p'

显然这是错误的做法。什么是正确的?我正在尝试更好地理解查询构建器。

您可以对多对一关系进行内部联接,然后对其进行过滤。

return $this->createQueryBuilder('p')
   ->innerJoin('p.project_contributors', 'pc')
   ->where('p.project_owner = :val')
   ->orWhere('pc.name = :val')
   ->setParameter('val', $value)
   ->getQuery()
   ->getResult()
;