Метод setFirstResult
Метод setFirstResult принадлежит классу Criteria
и используется для указания смещения при выборке элементов
из коллекции. Первым параметром передаётся целое число -
индекс элемента, с которого нужно начать выборку. Метод
возвращает текущий объект Criteria, что позволяет
выстраивать цепочку вызовов.
Этот метод особенно полезен в связке с методом
setMaxResults для реализации постраничной навигации.
Синтаксис
$criteria->setFirstResult(int $firstResult): static
Пример
Давайте создадим коллекцию и выберем элементы начиная с индекса 2:
<?php
namespace AppService;
use DoctrineCommonCollectionsArrayCollection;
use DoctrineCommonCollectionsCriteria;
class ArticleService
{
public function getArticles(): array
{
$collection = new ArrayCollection(['a', 'b', 'c', 'd', 'e']);
$criteria = Criteria::create()
->setFirstResult(2);
$res = $collection->matching($criteria)->toArray();
return $res;
}
}
?>
Результат выполнения кода:
["c", "d", "e"]
Пример
Давайте реализуем постраничную навигацию, комбинируя
setFirstResult и setMaxResults:
<?php
namespace AppService;
use DoctrineCommonCollectionsArrayCollection;
use DoctrineCommonCollectionsCriteria;
class ArticleService
{
public function getPage(): array
{
$collection = new ArrayCollection(
['a', 'b', 'c', 'd', 'e', 'f', 'g']
);
$page = 2;
$perPage = 3;
$offset = ($page - 1) * $perPage;
$criteria = Criteria::create()
->setFirstResult($offset)
->setMaxResults($perPage);
$res = $collection->matching($criteria)->toArray();
return $res;
}
}
?>
Результат выполнения кода для второй страницы:
["d", "e", "f"]
Смотрите также
-
класс
Criteria,
который задаёт условия выборки из коллекции -
метод
setMaxResults,
который ограничивает количество выбираемых элементов -
метод
orderBy,
который задаёт сортировку элементов выборки -
метод
matching,
который применяет критерий к коллекции