Метод through
Метод through применяется к экземпляру класса LengthAwarePaginator и позволяет применить callback-функцию к каждому элементу коллекции, возвращая новый экземпляр пагинатора с преобразованными данными. Первым параметром передаётся вызываемая функция, которая получает каждый элемент коллекции и должна вернуть преобразованное значение. Метод полезен, когда необходимо отформатировать или дополнить данные перед выводом, не изменяя исходную коллекцию.
Синтаксис
<?php
$paginator->through(callable $callback);
?>
Пример
Давайте преобразуем каждый элемент пагинации, добавив к строковому значению префикс:
<?php
use Illuminate\Pagination\LengthAwarePaginator;
$items = ['article', 'user', 'category'];
$paginator = new LengthAwarePaginator($items, 3, 2);
$res = $paginator->through(function ($item) {
return 'prefix_' . $item;
});
foreach ($res->items() as $item) {
echo $item;
}
?>
Результат выполнения кода:
"prefix_article"
"prefix_user"
"prefix_category"
Пример
Давайте преобразуем числовые значения, умножив их на два:
<?php
use Illuminate\Pagination\LengthAwarePaginator;
$items = [1, 2, 3, 4, 5];
$paginator = new LengthAwarePaginator($items, 5, 3);
$res = $paginator->through(function ($item) {
return $item * 2;
});
foreach ($res->items() as $item) {
echo $item;
}
?>
Результат выполнения кода:
"2"
"4"
"6"
"8"
"10"
Пример
Давайте преобразуем коллекцию объектов, извлекая из каждого только определённое поле:
<?php
use Illuminate\Pagination\LengthAwarePaginator;
$items = [
(object) ['id' => 1, 'name' => 'article'],
(object) ['id' => 2, 'name' => 'user'],
(object) ['id' => 3, 'name' => 'category']
];
$paginator = new LengthAwarePaginator($items, 3, 2);
$res = $paginator->through(function ($item) {
return $item->name;
});
foreach ($res->items() as $item) {
echo $item;
}
?>
Результат выполнения кода:
"article"
"user"
"category"
Смотрите также
-
метод
links,
который выводит ссылки пагинации -
метод
items,
который возвращает элементы текущей страницы -
метод
withQueryString,
который сохраняет параметры запроса в ссылках -
метод
paginate,
который создает экземпляр LengthAwarePaginator