Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie verbinde ich Unterabfragen mit Doctrine 2 DBAL?

Mary-Kate Olsen
Freigeben: 2024-10-23 23:50:29
Original
668 Leute haben es durchsucht

How to Join Subqueries with Doctrine 2 DBAL?

Unterabfragen mit Doctrine 2 DBAL verknüpfen

Einführung

Bei der Migration einer Zend Framework-Anwendung auf Doctrine 2.5 DBAL können beim Verknüpfen von Unterabfragen Probleme auftreten. Dieser Artikel soll eine umfassende Anleitung zu diesem speziellen Problem bieten.

Das Problem

Die gegebene Zend_Db-Abfrage verfügt über eine Unterabfrage, um Mindestzeitstempel für bestimmte Benutzerumfragen abzurufen. Die Hauptabfrage verbindet sich anschließend mit dieser Unterabfrage, um zusätzliche Daten abzurufen. Ziel ist es, diese Funktionalität mit dem Abfrage-Builder von Doctrine 2.5 zu replizieren.

Verknüpfung von Unterabfragen in Doctrine 2.5

Anfangs wurde angenommen, dass Doctrine das Verknüpfen von Unterabfragen nicht unterstützt. Es gibt jedoch eine Problemumgehung.

Lösung

Die Lösung besteht darin, das Roh-SQL der Unterabfrage abzurufen und es in Klammern zu setzen. Die Join-Syntax ähnelt einer regulären Join-Operation. In der Unterabfrage verwendete Parameter müssen jedoch in der Hauptabfrage definiert werden.

Code-Snippet

<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

Fazit

Mit dieser Problemumgehung können Sie Unterabfragen in Doctrine 2.5 DBAL verknüpfen . Indem Sie das Roh-SQL der Unterabfrage abrufen und ihre Parameter in der Hauptabfrage festlegen, können Sie die gewünschte Abfragestruktur erreichen.

Das obige ist der detaillierte Inhalt vonWie verbinde ich Unterabfragen mit 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!