【发布时间】:2011-07-28 13:40:50
【问题描述】:
我正在尝试限制从学说的 FindAll 方法返回的行。
public function getActiveUsersByPoint($limit = 100){
$users = $this->userRepository->findAll();
return $users;
}
此代码有效,但我不能使用 $limit 变量来限制结果。我该怎么做?
【问题讨论】:
我正在尝试限制从学说的 FindAll 方法返回的行。
public function getActiveUsersByPoint($limit = 100){
$users = $this->userRepository->findAll();
return $users;
}
此代码有效,但我不能使用 $limit 变量来限制结果。我该怎么做?
【问题讨论】:
EntityRepository#findBy() 方法还接受 orderings、limit 和 offset 作为第二到第四个参数:
$tenUsers = $em->getRepository('MyProject\Domain\User')
->findBy(
array('age' => 20), // $where
array('name' => 'ASC'), // $orderBy
10, // $limit
0 // $offset
);
【讨论】:
为了找到所有结果,你应该将一个空数组传递给 findBy 方法,我认为这是你假装的:
$users= $em->userRepository->findBy(
array(),
array('id' => 'DESC'),
10,
0
);
第一个参数是一个空数组,它相当于findAll(),然后是顺序(我把id作为样本),然后是limit,最后是偏移量。
【讨论】:
如果您的问题是针对 Doctrine 1.x,FindAll 表示“查找所有”。要限制结果,请使用 DQL:
$q = Doctrine_Query::create()
->from('UserRepository')
->limit($limit);
$users = $q->execute();
【讨论】: