使用 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中文網其他相關文章!