askedio / laravel-item-paginate
Paginate based on last item, not pages.
Installs: 7 268
Dependents: 0
Suggesters: 0
Security: 0
Stars: 67
Watchers: 3
Forks: 3
Open Issues: 3
pkg:composer/askedio/laravel-item-paginate
Requires
- php: >=5.5.9
- laravel/framework: 5.*
Requires (Dev)
- codacy/coverage: dev-master
- laravel/laravel: 5.*
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2020-01-19 14:52:03 UTC
README
Paginate based on last item, not page.
Installation
composer require askedio/laravel-item-paginate
Add the following trait to your Models.
use \Askedio\ItemPaginator\ItemPaginatorTrait;
Add the following provider to config/app.php
\Askedio\ItemPaginator\ItemPaginatorServiceProvider::class,
Usage
This package is based off simplePaginate and will take the same parameters.
$users = new User(); $paginated = $users->itemPaginate(); dd($paginated);
The last parameter is the field that will be used to paginate by, defaults to id.
itemPaginate($perPage = null, $columns = ['*'], $pageName = 'from', $from = 0, $field = null)
ORDER BY DESC
If you want to decend your sorting you'll want to use itemPaginateDesc instead of itemPaginate. The first page will add an extra query to find the last item.
Example Output
array:6 [ "limit" => 2 "next_page_url" => "http://localhost?from=190" "from" => 100 "to" => 190 "data" => array:2 [ 0 => array:8 [ "id" => 100 "name" => "test" "email" => "[email protected]" "password" => "test" "remember_token" => null "created_at" => "2016-08-02 18:13:19" "updated_at" => "2016-08-02 18:13:19" "deleted_at" => null ] 1 => array:8 [ "id" => 190 "name" => "test2" "email" => "[email protected]" "password" => "test" "remember_token" => null "created_at" => "2016-08-02 18:13:19" "updated_at" => "2016-08-02 18:13:19" "deleted_at" => null ] ] ]
Disclaimer
Will only sort by incremental ids.
I've only tested this with sqlite and mysql (see tests) so it may not work in every situation. Please report any you find.