Laravel 5.1 指定当前页面进行分页

Posted

技术标签:

【中文标题】Laravel 5.1 指定当前页面进行分页【英文标题】:Laravel 5.1 specifing current page for pagination 【发布时间】:2015-10-23 05:29:53 【问题描述】:

在这方面工作太久了,没有结果。我试过了。

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

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

\Paginator::setCurrentPage($current_page);

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

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

返回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);

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

如何指定页面?我需要手动指定。

我希望它像$model->find( )->paginate($per_page, $page) 一样简单

【问题讨论】:

我也有这个问题,如果我解决了会告诉你 【参考方案1】:

Builder 类有:

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

你可以打电话

Model::find(...)->paginate($per_page, ['*'], 'page', $page);

【讨论】:

是的,这种方法更好。谢谢@PATROMO。 太棒了。谢谢@Patromo。 工作得很好。 paginate() 函数的文档链接:laravel.com/api/5.5/Illuminate/Database/Eloquent/… 很好的解决方案。【参考方案2】:

假设你有$users 在你的UserController 中分页,你可能会这样做:

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'));

我相信这适用于 Laravel 5.0 及更高版本。必须检查一下。

【讨论】:

我必须使用\Illuminate\Pagination\Paginator::currentPageResolver 运行它,否则它会在当前名称空间中搜索类。使用 `\Paginator' 它告诉我找不到该类。这样就可以了! Shane,你可以在控制器顶部有 imported 类:use Illuminate\Pagination\Paginator; 完美。谢谢。 你的代码应该添加一个 if 条件来检查用户是否要去其他页面,否则它会卡在同一页面上。 虽然这可能有效,但我投了反对票,因为这只是简单地传递方法签名中已经存在的参数。【参考方案3】:

对于那些使用 api 并且想在 api 中指定当前页面的人,他们可以使用额外的参数,如下所示:

getProducts?page=3

【讨论】:

这真的取决于你的路由结构以及你如何使用框架。分页器默认使用 "first_page_url": "/?page=1" 但如果您不使用此结构,则它将不起作用。

以上是关于Laravel 5.1 指定当前页面进行分页的主要内容,如果未能解决你的问题,请参考以下文章

laravel怎么改造分页类,给他加上首页和尾页

Laravel 5.1使用分页自动递增行号

关于vue+Element-ui项目分页刷新不停留在当前页码bug解决

Laravel 5.1-5.8 中以前的路线名称

mysql分页优化

layui点击主页面分页数据点击修改数据后 返回当前分页的页面数据没有刷新