Heim > Datenbank > MySQL-Tutorial > Wie verbinde ich Unterabfragen in Doctrine 2 DBAL?

Wie verbinde ich Unterabfragen in Doctrine 2 DBAL?

Linda Hamilton
Freigeben: 2024-10-24 03:58:02
Original
678 Leute haben es durchsucht

How to Join Subqueries in Doctrine 2 DBAL?

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage