2012-04-05 36 views
13

Làm cách nào để triển khai truy vấn sau đây bằng Trình tạo truy vấn?Truy vấn với EXISTS cho Doctrine Symfony2

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

Kiểm tra phần không tồn tại dễ dàng, nhưng có cách nào để triển khai EXISTS không?

Trả lời

22

Bạn có thể cần phải sử dụng các nhà xây dựng hai truy vấn:

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

hoặc sử dụng DQL trực tiếp:

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

Bạn sẽ tìm thấy nhiều ví dụ trong các tài liệu: http://doctrine-orm.readthedocs.org/en/latest/reference/query-builder.html

+0

Cảm ơn bạn! đây là những gì tôi đang tìm kiếm :) – ArVan

+5

Có thể ràng buộc các tham số trong truy vấn phụ không? (liên kết của bạn đã chết) – Fractaliste

Các vấn đề liên quan