首頁 >資料庫 >mysql教程 >如何在 Dotrine 2 DBAL 中加入子查詢?

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

Linda Hamilton
Linda Hamilton原創
2024-10-24 03:58:02681瀏覽

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