sql >> Database >  >> RDS >> Mysql

Deelnemen aan subquery met doctrine 2 DBAL

Ik heb een oplossing gevonden door dit DQL-voorbeeld naar DBAL. De truc is om de onbewerkte SQL van de subquery te krijgen, deze tussen haakjes te plaatsen en eraan deel te nemen. Parameters die in de subquery worden gebruikt, moeten in de hoofdquery worden ingesteld:

$subSelect = $connection->createQueryBuilder()
    ->select(array('userSurveyID', 'MIN(timestamp) timestamp'))
    ->from('user_survey_status_entries')
    // Instead of setting the parameter in the main query below, it could be quoted here:
    // ->where('status = ' . $connection->quote(UserSurveyStatus::ACCESSED))
    ->where('status = :status')
    ->groupBy('userSurveyID');

$select = $connection->createQueryBuilder()
    ->select($selectColNames)
    ->from('user_surveys', 'us')
    // Get raw subquery SQL and wrap in brackets.
    ->leftJoin('us', sprintf('(%s)', $subSelect->getSQL()), 'firstAccess', 'us.userSurveyID = firstAccess.userSurveyID')
    // Parameter used in subquery must be set in main query.
    ->setParameter('status', UserSurveyStatus::ACCESSED)
    ->where('us.surveyID = :surveyID')->setParameter('surveyID', $surveyID);


  1. Datum en tijd Locales beschikbaar in MariaDB

  2. Codeigniter:Kolom 'id' in volgordeclausule is dubbelzinnig

  3. Selecteer alle projecten die overeenkomende tags hebben

  4. Slash of geen Slash?