2011-07-28 18 views
13

Tôi đang cố gắng giới hạn các hàng trả về từ phương thức FindAll của giáo lý.Hạn chế hàng cho giáo lý FindAll Phương pháp

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

    return $users; 
} 

Mã này hoạt động nhưng tôi không thể sử dụng biến giới hạn $ để giới hạn kết quả. Làm thế nào tôi có thể làm điều này?

Trả lời

56

Các EntityRepository # findBy() phương pháp bổ sung chấp nhận orderings, hạn chế và bù đắp như thứ hai để các thông số thứ tư:

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

Nếu câu hỏi của bạn dành cho Doctrine 1.x, FindAll có nghĩa là "tìm tất cả". Để hạn chế các kết quả, sử dụng DQL:

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

đây là giáo lý 1.x ... câu trả lời của tôi là 2.x –

5

Để tìm tất cả các kết quả, bạn phải vượt qua một mảng trống rỗng với phương pháp findBy, tôi nghĩ rằng đó là những gì bạn giả vờ:

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

param Đầu tiên là một mảng trống rỗng, mà nó tương đương với FindAll(), sau đó theo thứ tự (tôi đặt id như sa mple), sau đó giới hạn và cuối cùng là phần bù.

Các vấn đề liên quan