symfony2 / doctrine2 - инструкция dql onetoMany - PullRequest
1 голос
/ 18 марта 2012

У меня есть водитель и сущность.У одного водителя много машин.У меня есть следующий запрос dql:

$query = $this->getEntityManager()->createQuery('select d, c FROM driver d JOIN d.cars c WHERE c.color=:color');                
$query->setParameter('color', $color);
$query->setFirstResult((int)$offset ? $offset*15 : 0 );
$query->setMaxResults(15);   

В списке результатов есть 5 строк.Но когда я выполняю созданный SQL-запрос в консоли, то у меня 15 строк.Когда я меняю тип соединения на левое соединение, строки подсчитываются на машине, а не на водителе.Но я использую пейджер для чтения драйверов, у которых красные машины.

Кто-нибудь знает, что я делаю неправильно?Большое спасибо.

1 Ответ

3 голосов
/ 19 марта 2012

Когда вы делаете выборочные запросы соединения с Doctrine, для каждой сущности возвращается более одной строки. Если вы используете setMaxResults для этих запросов, некоторые объекты отбрасываются.

Читать это: http://docs.doctrine -project.org / projects / doctrine-orm / en / latest / reference / dql-doctrine-query-language.html # first-and-max-result-items-dql -query только

Решение здесь: http://docs.doctrine -project.org / projects / doctrine-orm / en / latest / tutorials / pagination.html

...