2013-08-29 2 views
0

Group (many-to-many)과 연관되어 User 엔티티를 상상해보십시오. 사용자 세부 정보를 표시해야합니다 (예 : 그룹 이름 또는 그룹 수). 내 컨트롤러 (심포니 2)에서 나는 모든 사용자를 얻을 수 있습니다 : 물론Doctrine으로 관련 엔티티를 계산할 때 많은 쿼리를 피하는 방법은 무엇입니까?

$users = $this->em->getRepository('My\Entity\User') 
    ->getAll(); 

// Assign $users to whatever the view engine 
return $this->render('users.html.twig', array('users' => $users)); 

, 기본적으로 협회 LAZY 인, 더 Group와 작업을 수행 가입하지 않습니다. 이것은 대부분 좋은 시간입니다.

하지만 내보기에서 그룹 수를 얻으려고하면 어떻게됩니까?

{% for user in users %} 
    {{ user.groups|length }} 
{% endfor %} 

결과는 원시마다 하나의 쿼리가 수행됩니다. 즉, 쿼리 번호는 사용자 번호와 같습니다. 1000 명의 사용자 (페이지 매김 없음)는 어떻게됩니까?

User 클래스의 모든 관련 엔티티를 가져 오는 방법 (즉, 하나의 검색어 만 발행)은 어떻게 할 수 있습니까?

+0

EXTRA-LAZY association은 어떻습니까? – manix

답변