Unterabfrage mit Doctrine 2 DBAL verbinden
In diesem Artikel wird der Prozess der Verknüpfung von Unterabfragen in Doctrine 2. DBAL untersucht. Obwohl Doctrine 2 dafür bekannt ist, dass es keine Unterabfrageverknüpfungen unterstützt, stellt dieser Artikel eine Problemumgehung mithilfe von createQueryBuilder() der DBAL-Verbindung vor.
Der vorangehende Code kann angepasst werden, um den Abfrage-Builder von Doctrine 2 DBAL zu verwenden:
<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>
Bei dieser Problemumgehung wird die Unterabfrage mit createQueryBuilder() für die Verbindung erstellt, nicht mit dem Entitätsmanager, und ihr SQL wird in Klammern eingeschlossen. Anschließend wird es mit leftJoin() mit der Hauptabfrage verknüpft und der in der Unterabfrage verwendete Parameter wird mit setParameter() in der Hauptabfrage festgelegt.
Durch Befolgen dieser Schritte können Sie Unterabfragen in Lehre 2 effektiv verknüpfen DBAL, auch wenn keine direkte Unterabfrageunterstützung verfügbar ist.
Das obige ist der detaillierte Inhalt vonWie verbinde ich Unterabfragen in Doctrine 2 DBAL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!