我遇到Symfony和DQL的问题。 我有两张桌子。
表A: id:int, status:string, referenceNumber:int tableB:[] tableB
表B: ID:INT, type:int, tableA_id:int
表在一个(tableA)到多个(tableB)关系中。
我需要找到每个TableA
TableA.status = Complete
AND (TableA.referenceNumber IS NULL OR COUNT(TableB.type = 22) = 0)
$queryBuilder = $this->getEntityManager()
->createQueryBuilder()
->select('u')
->from('TestBundle:TableA', 'a');
$queryBuilder->select('a','b');
$queryBuilder->leftjoin('a.tableB', 'b');
$queryBuilder->andWHERE('a.status = 'Complete')
$query = $queryBuilder->getQuery();
我不知道怎么写其余的查询。
答案 0 :(得分:0)
我认为你可以做到:
$query->where("a.status = 'Complete'")
->andWhere("a.referenceNumber IS NULL OR COUNT(b.type = 22) = 0");
如果您使用变量,请使用准备好的查询:
$query->where("a.status = :status")
->setParameter("status", $status);
希望这是你想要的