Метод paginate
Метод paginate применяется к запросу Eloquent
или Query Builder и возвращает экземпляр класса
LengthAwarePaginator, содержащий результаты
текущей страницы и информацию для навигации.
Первым параметром передаётся количество записей
на странице, вторым - список столбцов для выборки,
третьим - имя параметра страницы, которое по умолчанию
равно 'page'.
Синтаксис
<?php
Model::paginate($perPage, $columns, $pageName, $page);
?>
Пример
Давайте выведем статьи по 5 штук на странице:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::paginate(5);
foreach ($articles as $article) {
echo $article->title;
}
}
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3", "article 4", "article 5"]
Пример
Давайте отфильтруем статьи по статусу и выведем по 3 штуки:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::where('status', 'published')
->paginate(3);
foreach ($articles as $article) {
echo $article->title;
}
}
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3"]
Пример
Давайте укажем свои параметры для постраничной навигации:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::paginate(
perPage: 10,
columns: ['id', 'title', 'created_at'],
pageName: 'p'
);
echo "Total: " . $articles->total();
echo "Current page: " . $articles->currentPage();
}
}
?>
Результат выполнения кода:
"Total: 25"
"Current page: 1"
Смотрите также
-
метод
simplePaginate,
который выполняет быструю пагинацию без указания общего количества записей -
метод
cursorPaginate,
который использует курсоры для пагинации больших наборов данных -
класс
LengthAwarePaginator,
который содержит информацию о пагинации и общем количестве записей -
метод
links,
который генерирует HTML-ссылки для навигации между страницами