У меня возникла странная проблема с Doctrine.Отсутствие строк при запросе таблицы с помощью Doctrine (Symfony2)
Мне нужно запросить простую таблицу с одним внутренним соединением, которое я уже делал много раз. Но в этом случае что-то странно: пропущено много строк.
У меня есть объект, называемый политикой. Он связан с таблицей в моей базе данных Oracle. В этой таблице содержится 81k + строк. Когда вы запрашиваете этот объект с помощью конструктора запросов Doctrine, я получаю только 5k результатов. Я поставил этот вопрос как можно более простым для тестирования:
$qb = $em->createQueryBuilder();
$qb->select('p')->from('ErwMonitoringExtranetBundle:Policy', 'p');
$query = $qb->getQuery();
$policiesFull = $query->getResult();
В переменной $ policy Полная переменная содержит только 5k элементов. В таблице нет дубликатов.
SQL-запрос, который генерируется Doctrine выглядит следующим образом:
SELECT
r0_.node_group_name AS NODE_GROUP_NAME0,
r0_.policy_name AS POLICY_NAME1,
r0_.policy_description AS POLICY_DESCRIPTION2,
r0_.policy_group_name AS POLICY_GROUP_NAME3,
r0_.policy_type_name AS POLICY_TYPE_NAME4,
r0_.policy_name_on_agent AS POLICY_NAME_ON_AGENT5,
r0_.date_last_maj AS DATE_LAST_MAJ6,
r0_.om_name AS OM_NAME7,
r0_.id_node AS ID_NODE8
FROM
ewintranet.ref_monitored_ci;
Запуск точно такой же запрос на Oracle возвращает полное содержимое таблицы.
Подсчет результатов через запрос доктрины возвращает правильное число строк:
$qb = $em->createQueryBuilder();
$qb->select('count(p)')->from('ErwMonitoringExtranetBundle:Policy', 'p');
$query = $qb->getQuery();
echo $query->getSingleScalarResult();
Это возвращает 81K.
Кто-нибудь знает, почему все эти строки исчезают после использования getResult()?
Внутреннее соединение дает только результаты, соответствующие записи в обеих таблицах. – pietro
Каждая строка соответствует :) – Robou
У вас был запрограммированный запрос? поэтому попробуйте выполнить его непосредственно в базе данных. – pietro