Если я использую метод findBy класса репозитория, как я могу ограничить размер набора результатов?
Как ограничить размер результата, установленного в доктрине 2?
Ответ 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
);
Ответ 2
Для Doctrine Query Language у вас есть:
QueryBuilder::setMaxResults(integer $maxResults)
Ответ 3
Метод findBy() класса общего репозитория не поддерживает это.
Я бы написал свой собственный репозиторий (как описанный здесь) и переопределить findBy(), чтобы взять дополнительные параметры. Ваша новая реализация может использовать построитель запросов или простой-DQL для создания правильного запроса. (Я бы использовал querybuilder, так как вы, вероятно, можете просто передать параметр $critera прямо в QueryBuilder:: where())