2015-04-02 89 views
0

我有Symfony和DQL的问题。 我有2张桌子。Symfony2中的学说QueryBuilder

表A: ID:整型, 状态:串, referenceNumber:整数 tableB的:[] tableB的

表B: ID:整型, 类型:整数, tableA_id:整数

表在一个(tableA)到许多(tableB)关系中。

,我需要找到每一个表A,其中

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(); 

我不知道该怎么写查询的其余部分。

+2

你犯了一个错字,更改为'$ queryBuilder-> andWhere('a.status =“Complete”')'。 – D4V1D 2015-04-02 08:59:06

回答

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); 

希望这是你想要的