Как ограничить размер результата, установленного в доктрине 2?

Если я использую метод findBy класса репозитория, как я могу ограничить размер набора результатов?

Ответ 1

В методе Doctrine 2.1 EntityRepository # findBy() теперь принимает дополнительные параметры для упорядочения, ограничения и смещения.

см. полный список новых функций в доктрине 2.1 (404) Соответствующая ссылка на findBy и findOneBy

Пример:

 public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)

использование:

$product = $repository->findBy(
    array('name' => 'foo'),
    array('price' => 'ASC'),
    $myLimit,
    $myOffset
);

Ответ 3

Метод findBy() класса общего репозитория не поддерживает это.

Я бы написал свой собственный репозиторий (как описанный здесь) и переопределить findBy(), чтобы взять дополнительные параметры. Ваша новая реализация может использовать построитель запросов или простой-DQL для создания правильного запроса. (Я бы использовал querybuilder, так как вы, вероятно, можете просто передать параметр $critera прямо в QueryBuilder:: where())