2011-07-28 3 views
13

doctrine의 FindAll 메소드에서 리턴하는 행을 제한하려고합니다.Doctrine FindAll 메소드의 행 제한하기

public function getActiveUsersByPoint($limit = 100){ 
    $users = $this->userRepository->findAll(); 

    return $users; 
} 

이 코드는 작동하지만 결과를 제한하기 위해 $ limit 변수를 사용할 수 없습니다. 내가 어떻게 할 수 있니?

답변

56

EntityRepository # findBy() 메소드가 추가 순서화, 제한을 받아 네 번째 매개 변수로 두 번째 오프셋 : 모든 결과를 찾기 위해

$tenUsers = $em->getRepository('MyProject\Domain\User') 
       ->findBy(
        array('age' => 20),  // $where 
        array('name' => 'ASC'), // $orderBy 
        10,      // $limit 
        0       // $offset 
       ); 
1

Doctrine 1.x에 대한 질문 인 경우 FindAll은 "모두 찾기"를 의미합니다. 결과를 제한하려면 DQL을 사용

$q = Doctrine_Query::create() 
    ->from('UserRepository') 
    ->limit($limit); 
$users = $q->execute(); 
+0

이것은 교리 1.x ... 내 대답은 2.x입니다. –

5

, 당신 findBy 방법에 빈 배열을 전달해야한다, 나는 당신이 척 무슨 생각 :

$users= $em->userRepository->findBy(
      array(), 
      array('id' => 'DESC'), 
      10, 
      0 
     ); 

먼저 PARAM 그것이 findall은()에 해당 비어있는 배열입니다, 다음 순서 (I는 SA으로 ID를 넣어 mple), 한계 그리고 마지막으로 오프셋.

관련 문제