Ограничение строк для метода FindAll доктрины - PullRequest
13 голосов
/ 28 июля 2011

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

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

    return $users;
}

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

Ответы [ 3 ]

56 голосов
/ 05 февраля 2012

Метод EntityRepository # findBy () дополнительно принимает упорядочения, ограничения и смещения в качестве параметров со второго по четвертый:

$tenUsers = $em->getRepository('MyProject\Domain\User')
               ->findBy(
                   array('age' => 20),        // $where 
                   array('name' => 'ASC'),    // $orderBy
                   10,                        // $limit
                   0                          // $offset
                 );
5 голосов
/ 15 сентября 2015

Чтобы найти все результаты, вы должны передать пустой массив методу findBy, я думаю, это то, что вы притворяетесь:

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

Первый параметр - это пустой массив, который эквивалентен findAll (), затем порядок (я указал id в качестве образца), затем limit и, наконец, смещение.

1 голос
/ 29 июля 2011

Если ваш вопрос касается Doctrine 1.x, FindAll означает «найти все».Чтобы ограничить результаты, используйте DQL:

$q = Doctrine_Query::create()
  ->from('UserRepository')
  ->limit($limit);
$users = $q->execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...