Запрос доктрины с подзапросом не работает - PullRequest
0 голосов
/ 27 июня 2019

Я использую 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 параметры для обоих запросов.

...