Skip to content

Instantly share code, notes, and snippets.

@drjonnicholson
Last active September 23, 2020 17:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save drjonnicholson/2abf3ce6ba25de81a74105bc00db552f to your computer and use it in GitHub Desktop.
Save drjonnicholson/2abf3ce6ba25de81a74105bc00db552f to your computer and use it in GitHub Desktop.
Use Laravel Fractal (https://github.com/spatie/laravel-fractal) to transform data, but produce standard Laravel Pagination formatted result. This keeps compatibility with existing Vue components designed for Laravel (e.g. https://github.com/gilbitron/laravel-vue-pagination)
// copy'n'paste to use, e.g. into your support.php file
if (! function_exists('fractalPaginate')) {
function fractalPaginate($query, $transformer, $size = 10) {
$paginator = $query->paginate($size);
return [
'total'=> $paginator->total(),
'count' => $paginator->count(),
'per_page'=> $paginator->perPage(),
'current_page'=> $paginator->currentPage(),
'last_page'=> $paginator->lastPage(),
'first_page_url'=> $paginator->url(1),
'last_page_url'=> $paginator->url($paginator->lastPage()),
'next_page_url'=> $paginator->nextPageUrl(),
'prev_page_url'=> $paginator->previousPageUrl(),
'path'=> url()->current(),
'from'=> $paginator->firstItem(),
'to'=> $paginator->lastItem(),
'has_more_pages' => $paginator->hasMorePages(),
'data' => fractal($paginator->getCollection(), $transformer),
];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment