如何在 Dotrine 2 DBAL 中加入子查询?

Linda Hamilton
发布: 2024-10-24 03:58:02
原创
613 人浏览过

How to Join Subqueries in Doctrine 2 DBAL?

使用 Doctrine 2 DBAL 连接子查询

本文探讨了 Doctrine 2. DBAL 中连接子查询的过程。虽然 Doctrine 2 因不支持子查询连接而闻名,但本文提出了一种使用 DBAL 连接的 createQueryBuilder() 的解决方法。

前面的代码可以修改为使用 Doctrine 2 DBAL 的查询构建器:

<code class="php">$subSelect = $connection->createQueryBuilder()
    ->select(array('userSurveyID', 'MIN(timestamp) timestamp'))
    ->from('user_survey_status_entries')
    ->where('status = :status')
    ->groupBy('userSurveyID');

$select = $connection->createQueryBuilder()
    ->select($selectColNames)
    ->from('user_surveys', 'us')
    ->leftJoin('us', sprintf('(%s)', $subSelect->getSQL()), 'firstAccess', 'us.userSurveyID = firstAccess.userSurveyID')
    ->setParameter('status', UserSurveyStatus::ACCESSED)
    ->where('us.surveyID = :surveyID')
    ->setParameter('surveyID', $surveyID);</code>
登录后复制

在此解决方法中,子查询是在连接上使用 createQueryBuilder() 构造的,而不是实体管理器,并且其 SQL 包含在括号中。然后使用 leftJoin() 将其连接到主查询,并使用 setParameter() 在主查询中设置子查询中使用的参数。

通过执行以下步骤,您可以在 Doctrine 2 中有效地连接子查询DBAL,即使直接子查询支持不可用。

以上是如何在 Dotrine 2 DBAL 中加入子查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!