Пакет Laravel Union Paginator, розроблений Austin White, об'єднує дані з кількох моделей Eloquent в один запит за допомогою SQL-об'єднань. За допомогою цього пакету ви можете отримати "послідовну пагінацію і налаштування для різних джерел даних".
Клас UnionPaginator
налаштовується на основі моделей, які розширюють базовий клас Eloquent Model
. Ви можете контролювати перетворення записів кожної моделі і викликати paginate()
на екземплярі UnionPaginator
після налаштування:
use AustinW\UnionPaginator\UnionPaginator;
// Визначаємо моделі
$paginator = UnionPaginator::for([User::class, Post::class]);
// Застосовуємо перетворення
$paginator->transform(User::class, fn($record) => [
'id' => $record->id,
'name' => $record->name,
])->transform(Post::class, fn($record) => [
'title' => $record->title,
'created_at' => $record->created_at,
]);
// Пагінація результатів
$paginatedResults = $paginator->paginate(10);
// Проходимо через пагіновані елементи
foreach ($paginatedResults->items() as $item) {
// Обробляємо пагінований елемент
}
Пакет Union Paginator сумісний з Laravel v10 та Laravel v11. Щоб почати працювати з цим пакетом, відвідайте його на GitHub за посиланням austinw/laravel-union-paginator