2011-07-28 14 views
13

doctrineのFindAllメソッドから返される行を制限しようとしています。Doctrine FindAllメソッドの行を制限する

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

    return $users; 
} 

このコードは機能しますが、結果を制限するために$ limit変数を使用することはできません。どうすればいい?

答えて

56

EntityRepository#findBy()メソッドは、さらに、順序、制限を受け入れ、第四パラメータにある第2オフセット:すべての結果を見つけるために

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

あなたの質問がDoctrine 1.xの場合、FindAllは "find all"を意味します。結果を制限するために、DQLを使用する:

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

これはdoctrine 1.xです...私の答えは2.xです –

5

、あなたfindByメソッドに空の配列を渡す必要があり、私はそれはあなたがふりをするものだと思う:

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

まずparamはそれがのfindAll()と同等です空の配列、である、そしてオーダー(私はSAとしてIDを置きますその後、の制限がになり、最後にオフセットが適用されます。

関連する問題