正在发送我的请求,其中包含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,但是它没有显示如何在雄辩的模型分页中设置它
答案 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());