Я создал тест и записываю в БД, если люди правильно ответили на все вопросы и сколько времени они потратили на завершение теста.
Я пытаюсь создать построитель запросов, чтобы получить парня, который ответил правильно на максимум вопросов с минимумом времени.
Мой стол выглядит так:
Итак, запрос (который работает), который я сделал в SQL в БД:
SELECT
id
FROM
public.user_quizz
WHERE
quizz_id = 4
AND
number_correct_answers IN (SELECT max(number_correct_answers) FROM user_quizz WHERE quizz_id = 4)
AND
answered_in IN (SELECT min(answered_in) FROM user_quizz WHERE quizz_id = 4);
Конечно, я не знаю, является ли это лучшим (и наиболее оптимальным) запросом, который мы могли бы сделать в этом случае, но он работает.
Теперь я пытаюсь перевести этот запрос в построитель запросов.
Я заблокирован выражением IN . Я не знаю, как я мог сделать ВЫБОР здесь.
$qb = $this->createQueryBuilder('u');
$query = $qb->select('u')
->andWhere(
$qb->expr()->eq('u.quizz', ':quizzId'),
$qb->expr()->in(
'u.numberCorrectAnswers',
)
)
->setParameter('quizzId', $quizz->getId())
->getQuery()
;
Спасибо за вашу помощь.