使用 doctrine query builder 检查值是否在两列之一中
Check if a value is in one of two columns with doctrine query builder
我正在尝试构建一个查询来检查实体 Project
并检查两列 project_owner
或 project_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()
;
我正在尝试构建一个查询来检查实体 Project
并检查两列 project_owner
或 project_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()
;