Mysql
 sql >> база данни >  >> RDS >> Mysql

Присъединете се към подзаявка с доктрина 2 DBAL

Намерих решение, като адаптирах този DQL пример към DBAL. Номерът е да получите суровия SQL на подзаявката, да го увиете в скоби и да го присъедините. Параметрите, използвани в подзаявката, трябва да бъдат зададени в основната заявка:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP - Azure mySQL в приложението променени портове произволно

  2. MySQL Docker контейнерът не записва данни в ново изображение

  3. Rails при инсталиране на mysql - Грешка при инсталиране на mysql2:ГРЕШКА:Неуспешно изграждане на собствено разширение на gem

  4. MySQL поддържа ли потребителски дефинирани типове данни

  5. Код на грешка:1005. Не може да се създаде таблица...' (errno:150)