ホームページ  >  記事  >  データベース  >  Doctrine 2 DBAL でサブクエリを結合するにはどうすればよいですか?

Doctrine 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。ただし、直接サブクエリのサポートは利用できません。

以上がDoctrine 2 DBAL でサブクエリを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。