2012-04-05 36 views
13

¿Cómo puedo implementar la siguiente consulta con Query Builder?Consulta con EXISTS for 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 sin verificación de existir es fácil, pero hay una manera de implementar la EXISTS?

Respuesta

22

Usted necesitará usar dos constructores de consulta:

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

o usar directamente DQL:

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

Encontrará más ejemplos en la documentación: http://doctrine-orm.readthedocs.org/en/latest/reference/query-builder.html

+0

Gracias! esto es lo que estaba buscando :) – ArVan

+5

¿Es posible enlazar parámetros en la subconsulta? (tu enlace está muerto) – Fractaliste

Cuestiones relacionadas