Ограничение строк для метода Doctrine FindAll
Я пытаюсь ограничить строки, которые возвращаются из метода doctring FindAll.
public function getActiveUsersByPoint($limit = 100){
$users = $this->userRepository->findAll();
return $users;
}
Этот код работает, но я не могу использовать $limit для ограничения результатов. Как я могу это сделать?
Ответы
Ответ 1
Метод EntityRepository # findBy() дополнительно принимает порядок, ограничение и смещение в качестве второго-четвертого параметров:
$tenUsers = $em->getRepository('MyProject\Domain\User')
->findBy(
array('age' => 20), // $where
array('name' => 'ASC'), // $orderBy
10, // $limit
0 // $offset
);
Ответ 2
Чтобы найти все результаты, вы должны передать пустой массив методу findBy, я думаю, что это то, что вы притворяетесь:
$users= $em->userRepository->findBy(
array(),
array('id' => 'DESC'),
10,
0
);
Первый параметр - пустой массив, который эквивалентен findAll(), затем порядок (я помещаю id как образец), затем limit и, наконец, смещение.
Ответ 3
Если ваш вопрос для Doctrine 1.x, FindAll означает "найти все". Чтобы ограничить результаты, используйте DQL:
$q = Doctrine_Query::create()
->from('UserRepository')
->limit($limit);
$users = $q->execute();