Подтвердить что ты не робот

Ограничение строк для метода Doctrine FindAll

Я пытаюсь ограничить строки, которые возвращаются из метода doctring FindAll.

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

    return $users;
}

Этот код работает, но я не могу использовать $limit для ограничения результатов. Как я могу это сделать?

4b9b3361

Ответ 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();