Метод setFirstResult
Метод setFirstResult класса Query задаёт смещение -
номер первой строки выборки, с которой начнётся результат.
Первым параметром передаётся целое число: 0 означает
начало с первой строки, 5 - пропустить первые пять строк
и начать с шестой. Чаще всего метод применяется вместе с
setMaxResults для организации постраничной навигации.
Синтаксис
$query->setFirstResult(int $firstResult): static
Пример
Давайте создадим QueryBuilder для сущности Article
и получим записи, начиная с третьей:
<?php
namespace AppRepository;
use AppEntityArticle;
use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository;
use DoctrinePersistenceManagerRegistry;
class ArticleRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Article::class);
}
public function findFromThird(): array
{
$qb = $this->createQueryBuilder('a');
$query = $qb->getQuery();
$query->setFirstResult(2);
return $query->getResult();
}
}
?>
Результат выполнения кода:
["article 3", "article 4", "article 5"]
Пример
Давайте совместим setFirstResult и setMaxResults,
чтобы получить вторую страницу выборки по три записи:
<?php
namespace AppRepository;
use AppEntityArticle;
use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository;
use DoctrinePersistenceManagerRegistry;
class ArticleRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Article::class);
}
public function findSecondPage(int $page = 2, int $perPage = 3): array
{
$qb = $this->createQueryBuilder('a');
$qb->orderBy('a.id', 'ASC');
$query = $qb->getQuery();
$query->setFirstResult(($page - 1) * $perPage);
$query->setMaxResults($perPage);
return $query->getResult();
}
}
?>
Результат выполнения кода для второй страницы:
["article 4", "article 5", "article 6"]
Смотрите также
-
метод
setMaxResults,
который задаёт максимальное число строк выборки -
метод
getResult,
который возвращает массив объектов выборки -
метод
setParameter,
который привязывает значение к параметру запроса -
класс
Query,
который представляет собой DQL-запрос