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


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

Author: blacktie24, 2011-04-12

3 answers

В Доктрине 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
);
 114
Author: Nikolai Senkevich, 2015-03-13 15:05:00

Для DQL у вас есть: QueryBuilder setMaxResults (целочисленные максимальные результаты).

 4
Author: Jarzon, 2011-11-13 23:23:34

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

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

 3
Author: timdev, 2011-04-12 20:29:24