首页 > 解决方案 > Laravel api分页指定页面

问题描述

我在 url 中使用 perPage 和 page 发送我的请求。那是

url = users?page=0&perPage=10 //the get http url

所以我想对我的模型请求进行分页,并指定 page 和 perPage

User::paginate()

所以查看文档我看到我可以添加 perPage 但我看不到如何添加页面。所以从laravel 文档中我看到你可以添加perPage

User::paginate($request->get('perPage')) //perPage from url request

但是现在我如何将页面参数添加到分页中,这样我就可以指定页面值,例如 0

我该如何进行?

我也检查了这个问题,但它没有显示如何在一个雄辩的模型分页中设置它

标签: phplaravel

解决方案


Illuminate/Database/Eloquent/Builder中的paginate方法具有以下签名:

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

只要page=n您的 url(查询字符串)中有一个 (n for number > 0, ie: page=2),您就不需要在paginate方法中传递页码。如果你想要的话,你可以使用类似下面的东西来做:

$users = User::paginate(
    10, // per page (may be get it from request)
    ['*'], // columns to select from table (default *, means all fields)
    'page', // page name that holds the page number in the query string
    10 // current page, default 1
);

仅供参考, 使用Illuminate/Pagination/AbstractPaginator::Laravel resolverCurrentPage 方法解析当前页面,该方法(解析器)在注册服务提供者时在Illuminate/Pagination/PaginationServiceProvider::currentPageResolver方法中设置。

如果您不知道,您也可以省略,perPage因为默认情况下Laravel按记录分块15,它是在基本模型中设置的,您可以使用以下方法在模型中覆盖它:

protected $perPage = 10;

所以,你可以使用User::paginate()which 会给你10items/perPage。

注意:给出了 api 链接,5.6但在这种情况下(AFAIK)在更高版本中是相同的。


推荐阅读