2012-04-05 24 views
13

Come posso implementare la query seguente con Query Builder?Interrogazione con EXISTS per Doctrine Symfony2

SELECT * 
FROM t 
WHERE t.status = 1 
    OR EXISTS(SELECT * 
       FROM r 
       WHERE r.t_id = t.id 
        AND r.status = 1 
      ) 

La parte senza controllo esistere è facile, ma c'è un modo per implementare il EXISTS?

risposta

22

vi sia bisogno di usare i costruttori di due query:

$queryBuilder->expr()->exists($subQueryBuilder->getDql()); 

o utilizzare direttamente DQL:

$queryBuilder->expr()->exists('SELECT * 
    FROM r 
    WHERE r.t_id = t.id 
    AND r.status = 1' 
); 

Troverete altri esempi nella documentazione: http://doctrine-orm.readthedocs.org/en/latest/reference/query-builder.html

+0

Grazie! questo è quello che stavo cercando :) – ArVan

+5

È possibile associare i parametri nella sottoquery? (il tuo link è morto) – Fractaliste

Problemi correlati