-
-
Save wuiler/9fd3ca8fa5d58265b49ecfc45dd1e095 to your computer and use it in GitHub Desktop.
Laravel Paginate Collection or Array
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Gera a paginação dos itens de um array ou collection. | |
* | |
* @param array|Collection $items | |
* @param int $perPage | |
* @param int $page | |
* @param array $options | |
* | |
* @return LengthAwarePaginator | |
*/ | |
public function paginate($items, $perPage = 15, $page = null, $options = []) | |
{ | |
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1); | |
$items = $items instanceof Collection ? $items : Collection::make($items); | |
return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options); | |
} |
I solve it
collect( [ 2 => 'Some value', 5 => 'other value' ] )->paginate(15)
https://gist.github.com/freelance-github/fe8488ff19b1a7ed67223b15c7a25b52
Thanks !
Genius. You saved my life.
thank you very much
Thanks !
Thanks, it's working for me!
Thanks man! Your a genious.
Thank you !!
How can i use $collection->links()?
I got this error actually: Method Illuminate\Database\Eloquent\Collection::links does not exist.
PS: very intuitive solution!!
thanks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I solve it can access it from collect() function like
collect([2=>'some think', 9 => 'Hi'])
so go to AppServiceProvider.php and past this in boot function
/** * Bootstrap any application services. * * @return void */ public function boot() { /** * Paginate a standard Laravel Collection. * * @param int $perPage * @param int $total * @param int $page * @param string $pageName * @return array */ Collection::macro('paginate', function($perPage, $total = null, $page = null, $pageName = 'page') { $page = $page ?: LengthAwarePaginator::resolveCurrentPage($pageName); return new LengthAwarePaginator( $this->forPage($page, $perPage)->values(), $total ?: $this->count(), $perPage, $page, [ 'path' => LengthAwarePaginator::resolveCurrentPath(), 'pageName' => $pageName, ] ); }); }