Maison > base de données > tutoriel mysql > Comment rejoindre des sous-requêtes dans Doctrine 2 DBAL ?

Comment rejoindre des sous-requêtes dans Doctrine 2 DBAL ?

Linda Hamilton
Libérer: 2024-10-24 03:58:02
original
834 Les gens l'ont consulté

How to Join Subqueries in Doctrine 2 DBAL?

Rejoindre une sous-requête avec Doctrine 2 DBAL

Cet article explore le processus de jonction de sous-requêtes dans Doctrine 2. DBAL. Bien que Doctrine 2 soit connu pour ne pas prendre en charge les jointures de sous-requêtes, cet article présente une solution de contournement utilisant createQueryBuilder() de la connexion DBAL.

Le code précédent peut être adapté pour utiliser le générateur de requêtes de 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>
Copier après la connexion

Dans cette solution de contournement, la sous-requête est construite à l'aide de createQueryBuilder() sur la connexion, et non du gestionnaire d'entités, et son SQL est placé entre parenthèses. Il est ensuite joint à la requête principale à l'aide de leftJoin(), et le paramètre utilisé dans la sous-requête est défini dans la requête principale à l'aide de setParameter().

En suivant ces étapes, vous pouvez effectivement joindre des sous-requêtes dans Doctrine 2. DBAL, même si la prise en charge directe des sous-requêtes n'est pas disponible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal