2015-04-02 5 views
0

У меня проблема с Symfony и DQL. У меня есть 2 стола.Doctrine QueryBuilder в Symfony2

TableA: ID: ИНТ, статус: строка, ReferenceNumber: Int TableB: [] TableB

TableB: ID: INT, Тип: 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(); 

Я не знаю, как написать остальную часть запроса.

+2

Вы сделали опечатку, измените на '$ queryBuilder-> andWhere ('a.status =" Complete "')'. – D4V1D

ответ

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

Надежда это то, что вы хотите

Смежные вопросы