Doctrine2: Doctrine-запрос возвращает разные результаты из необработанного запроса? - PullRequest
0 голосов
/ 28 апреля 2011

Я сталкивался с этим несколько раз в прошлом, и я просто закончил писать необработанный SQL-запрос для его преодоления, но я действительно хочу выяснить, почему это происходит. Посмотрите на утверждение ниже

$q = $this->entityManager->createQuery('SELECT um,s,st
                    FROM Dashboard\Entity\Metric um
                    JOIN um.stat st
                    JOIN um.site s
                    JOIN s.clients c
                    WHERE c.id = ?1
                    AND s.competitor = 0
                    AND s.ignored = 0
                    AND st.id IN (?2)
                    GROUP BY s.id, st.id
                    ORDER BY st.response_field, s.id')
                    ->setParameter(1, $params['c_id'])
                    ->setParameter(2, $statId);

        $sql = $q->getSql();
        $rs = $q->getResult();

Если я возьму содержимое $sql и вставлю его в инструмент mySQL и выполню необработанный запрос, он вернет 18 правильных результатов.

Однако $rs содержит только 3 результата. $statId - строка из 6 чисел, разделенных запятыми: (1,2,3,4,5,6). Поэтому я группируюсь по st.id и s.id. Для каждого элемента st.id будет 3 s.id элементов, что соответствует 18 ожидаемым результатам. Происходит то, что Доктрина возвращает только первый st.id, который является группой из 3 s.id s

Есть идеи, что может быть причиной этого?

1 Ответ

0 голосов
/ 28 апреля 2011

Я получил свой ответ от IRC, но публикую здесь, если это поможет кому-то еще. Операторы Smart WHERE IN не планируются для поддержки до версии 2.1.

http://groups.google.com/group/doctrine-dev/browse_thread/thread/fbf70837293676fb

Но я могу достичь той же цели с помощью построителя запросов.

http://www.doctrine -project.org / документы / ОРМ / 2.0 / ен / ссылка / запрос-builder.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...