2012-03-18 2 views
1

저는 엔티티 드라이버와 엔티티 카를 가지고 있습니다. 한 명의 운전자가 많은 자동차를 가지고 있습니다. 나는 다음과 같은 DQL 쿼리가 있습니다symfony2/doctrine2 - dql 문 onetoMany

$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); 

resultlist 5 개 행이 있습니다. 하지만 콘솔에서 생성 된 SQL 쿼리를 수행하면 15 개의 행이 생깁니다. 조인 유형을 왼쪽 조인으로 변경하면 행이 드라이버가 아닌 차로 계산됩니다. 하지만 나는 빨간 차가있는 운전자를 위해 호출기를 사용하고 있습니다.

내가 뭘 잘못하고 있는지 아는 사람이 있습니까? 대단히 감사합니다.

답변

3

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-only

이 솔루션은 여기에 있습니다 : http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/pagination.html

+0

멋진 대답을! 페이지 매기기에 대해, 그것에 대해 읽고, 나는 단지 더 큰 데이터 집합에 대한 킬러 비싼 작업이 될 것이라고 가정 할 수 있습니다 ... –

+0

캐시는이 경우 귀하의 친구입니다 – Maxence

+0

위대한! 감사합니다. –