Laravel API分页指定页面

时间:2019-06-09 19:16:26

标签: php laravel

正在发送我的请求,其中包含perPage和url中的页面。那是

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

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

User::paginate()

所以在文档中看,我可以添加perPage,但看不到如何添加页面。所以从laravel documentation看,您可以像这样添加perPage

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

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

我该如何进行?

我也检查了This question,但是它没有显示如何在雄辩的模型分页中设置它

3 个答案:

答案 0 :(得分:4)

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

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

只要您的网址(查询字符串)中有一个page=n(n表示数字> 0,即:page = 2),就不需要在{{1 }} 方法。如果需要的话,可以使用以下方法进行操作:

paginate

FYI,$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:: resolveCurrentPage方法解析当前页面,该方法是在注册服务提供商时在Illuminate/Pagination/PaginationServiceProvider:: currentPageResolver方法中设置的(解析程序)。

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

15

因此,您只需使用protected $perPage = 10; ,每页便可以获得User::paginate()个项目。

注意:为10提供了api链接,但在这种情况下,较高版本(AFAIK)中的api链接相同。

答案 1 :(得分:2)

摘自官方文档

the current page is detected by the value of the page query string argument on the HTTP request.

Laravel自动处理它。因此,您无需执行任何操作。

答案 2 :(得分:1)

使用->appends()方法

$users = User::paginate($request->get('perPage')); 
$users->appends($request->all());