askedio / laravel-item-paginate
Paginate based on last item, not pages.
Installs: 7 266
Dependents: 0
Suggesters: 0
Security: 0
Stars: 67
Watchers: 3
Forks: 3
Open Issues: 3
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" => "test@test.com" "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" => "test2@test.com" "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.