Я использую Symfony 4 и Doctrine, я хочу сделать сложный запрос с подзапросом:
$status = [0, 1];
$subquery = $this->_em->createQueryBuilder()
->select('COUNT(item.id)')
->from('App\Entity\CalculItem', 'item')
->where('item.status IN (:status)')
->andWhere('item.file = c')
->setParameter('status', $status)
->getDQL();
$query = $this->createQueryBuilder('c')
->where('c.status = :status')
->setParameter('status', 1)
->andWhere('('. $subquery .') = 0')
->andWhere('c.stat_items > 0')
->setMaxResults(1)
->getQuery()
;
dump($query->getSQL());
return $query->getOneOrNullResult();
У меня нет ошибок, но он возвращает мне результат, хотя я не ожидаю никакихрезультат.Если я использую ->getSQL()
непосредственно в phpmyadmin, у меня не будет никакого результата.
Я не понимаю, почему у меня возвращен результат с «способом Symfony / Doctrine», а без результата сЗапрос SQL?
РЕДАКТИРОВАТЬ
Если вы используете подзапрос, вам нужно ограничить параметры только в «главном» запросе.Поскольку вы используете ->getDQL()
для подзапроса, он не ограничивает параметры.
В моем случае я использовал (моя ошибка) :status
параметры для обоих запросов.