我正在尝试限制从doctrine的FindAll方法返回的行。
public function getActiveUsersByPoint($limit = 100){
$users = $this->userRepository->findAll();
return $users;
}
此代码有效,但我无法使用$ limit变量来限制结果。我怎么能这样做?
答案 0 :(得分:56)
EntityRepository#findBy()方法还接受排序,限制和偏移作为第二到第四参数:
$tenUsers = $em->getRepository('MyProject\Domain\User')
->findBy(
array('age' => 20), // $where
array('name' => 'ASC'), // $orderBy
10, // $limit
0 // $offset
);
答案 1 :(得分:5)
为了找到所有结果,你应该将一个空数组传递给findBy方法,我认为这是你假装的:
$users= $em->userRepository->findBy(
array(),
array('id' => 'DESC'),
10,
0
);
第一个参数是一个空数组,它相当于findAll(),然后是顺序(我把id作为样本),然后是限制,最后是偏移量。
答案 2 :(得分:1)
如果您的问题是针对Doctrine 1.x,则FindAll的意思是“全部查找”。要限制结果,请使用DQL:
$q = Doctrine_Query::create()
->from('UserRepository')
->limit($limit);
$users = $q->execute();