首页  >  文章  >  数据库  >  如何在 Dotrine 2 DBAL 中加入子查询?

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

Linda Hamilton
Linda Hamilton原创
2024-10-24 03:58:02613浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn