2012-04-05 30 views
13

如何使用查詢生成器實現以下查詢?使用EXISTS查詢原則Symfony2

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

不存在檢查的部分很容易,但有落實EXISTS的方法嗎?

回答

22

您可能需要使用兩個查詢生成器:

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

或直接使用DQL:

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

你會在文檔中找到更多的例子:http://doctrine-orm.readthedocs.org/en/latest/reference/query-builder.html

+0

謝謝!這是我正在尋找:) – ArVan 2012-04-06 08:02:58

+5

是否有可能在子查詢中綁定參數? (你的鏈接已經死了) – Fractaliste 2014-10-08 07:28:37