【问题标题】:Query with EXISTS for Doctrine Symfony2使用 EXISTS 查询 Doctrine Symfony2
【发布时间】:2012-04-05 14:28:38
【问题描述】:

如何使用查询生成器实现以下查询?

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

不存在检查的部分很简单,但是有没有办法实现EXISTS

【问题讨论】:

    标签: symfony doctrine query-builder


    【解决方案1】:

    您需要使用两个查询构建器:

    $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

    【讨论】:

    • 谢谢!这就是我要找的:)
    • 是否可以在子查询中绑定参数? (您的链接已失效)
    • 您必须在主查询中设置参数,即使是在exists 语句中使用的参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多