クエリビルダーで次のクエリを実装するにはどうすればよいですか?
SELECT *
FROM t
WHERE t.status = 1
OR EXISTS(SELECT *
FROM r
WHERE r.t_id = t.id
AND r.status = 1
)
存在チェックのない部分は簡単ですが、EXISTS
を実装する方法はありますか?
次の2つのクエリビルダーを使用する必要があります。
$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