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。ただし、直接サブクエリのサポートは利用できません。
以上がDoctrine 2 DBAL でサブクエリを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。