如何使用查询生成器实现以下查询?
SELECT *
FROM t
WHERE t.status = 1
OR EXISTS(SELECT *
FROM r
WHERE r.t_id = t.id
AND r.status = 1
)
没有检查的部分很简单,但有没有办法实现EXISTS
?
答案 0 :(得分:30)
您需要使用两个查询构建器:
$queryBuilder->expr()->exists($subQueryBuilder->getDql());
或直接使用DQL:
$queryBuilder->expr()->exists('SELECT *
FROM r
WHERE r.t_id = t.id
AND r.status = 1'
);
您可以在文档中找到更多示例:http://www.doctrine-project.org/projects/doctrine-orm/en/current/reference/query-builder.html