Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel 5.1 specifing current page for pagination

Been working on this for far too long with no results. I have tried.

`\Illuminate\Pagination\Paginator::setCurrentPage($current_page);` 

returns Call to protected method Illuminate\Pagination\Paginator::setCurrentPage()

\Paginator::setCurrentPage($current_page);

returns Call to protected method Illuminate\Pagination\Paginator::setCurrentPage()

\DB::getPaginator()->setCurrentPage($current_page);

returns call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Database\MySqlConnection' does not have a method 'getPaginator'

$tmp = new Post( ); $tmp->getConnection()->setCurrentPage($current_page);

returns call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Database\MySqlConnection' does not have a method 'getPaginator'

How can I specify the page? I need to specify it manually.

I had hoped it to be as easy as $model->find( )->paginate($per_page, $page)

like image 842
Shane Avatar asked Jul 31 '15 13:07

Shane


People also ask

How can I get current page in pagination Laravel?

you can easy and simply Pagination current Button in laravel. we can add current link on pagination using simplePaginate() in laravel 6, laravel 7 and laravel 8 application. laravel provide new eloquent method simplePaginate() for adding simple pagination with only current button link.

How can I use pagination in Laravel?

Use Pagination in Laravel Implementing pagination in laravel is smooth, add the laravel paginate function in the getData() function inside the EmployeeController class. Remove all() and use paginate() and it takes a number as an argument, that number defines the number of results to be shown to the user.

What is Paginator in Laravel?

The pagination option specifies which view should be used to create pagination links. By default, Laravel includes two views. The pagination::slider view will show an intelligent "range" of links based on the current page, while the pagination::simple view will simply show "previous" and "next" buttons.


2 Answers

The Builder Class has:

public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) 

You can call

Model::find(...)->paginate($per_page, ['*'], 'page', $page); 
like image 116
PATROMO Avatar answered Oct 23 '22 08:10

PATROMO


Suppose you have $users to paginate in your UserController, you might do:

public function index() {     $currentPage = 3; // You can set this to any page you want to paginate to      // Make sure that you call the static method currentPageResolver()     // before querying users     Paginator::currentPageResolver(function () use ($currentPage) {         return $currentPage;     });      $users = \App\User::paginate(5);      return view('user.index', compact('users')); } 

I believe this applies to Laravel 5.0 and above. Have to check on that.

like image 25
amith.gotamey Avatar answered Oct 23 '22 10:10

amith.gotamey