做法
新增 app/Mixins/CollectionMixin.php
檔:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| namespace App\Mixins;
use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\Paginator;
class CollectionMixin { public function paginate() { return function ($perPage = 15, $page = null, $options = []) { $page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
return ( new LengthAwarePaginator( $this->forPage($page, $perPage)->values(), $this->count(), $perPage, $page, $options ) )->withPath(''); }; } }
|
在 app/Providers/AppServiceProvider.php
檔註冊:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| namespace App\Providers;
use App\Mixins\CollectionMixin; use Illuminate\Support\Collection; use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider {
public function register() { }
public function boot() { Collection::mixin(new CollectionMixin()); } }
|
使用:
1 2 3
| $items = [1, 2, 3, 4, 5];
return collect($items)->paginate(2, 2);
|
結果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| { "current_page": 2, "data": { "2": 3, "3": 4 }, "first_page_url": "?page=1", "from": 3, "last_page": 3, "last_page_url": "?page=3", "next_page_url": "?page=3", "path": "", "per_page": 2, "prev_page_url": "?page=1", "to": 4, "total": 5 }
|