Laravel 5.1 specifing current page for pagination

2019-02-04 08:15发布

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)

3条回答
等我变得足够好
2楼-- · 2019-02-04 08:55

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.

查看更多
萌系小妹纸
3楼-- · 2019-02-04 09:16

for those people who using api and they want to specify the current page in api, they can use extra parameter like this:

getProducts?page=3

查看更多
Emotional °昔
4楼-- · 2019-02-04 09:19

The Builder Class has:

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

You can call

Model::find(...)->paginate($per_page, ['*'], 'page', $page);
查看更多
登录 后发表回答