向分页添加参数

时间:2019-06-13 15:22:38

标签: laravel lumen

在Laravel Lumen API项目中,我给出了分页结果。

....
"next_page_url" is "http://example.com/something?pg=2"
....

如何将所有包含在请求的URL中的参数添加到所有链接?

样本: http://example.com/something?pg=1&color=red&limit=2

next_page_url然后应如下所示:     http://example.com/something?pg=2&color=red&limit=2

$queryStrings = Input::except('limit', 'order_by', 'order', 'page', 'count', 'current_page', 'last_page', 'next_page_url', 'per_page', 'previous_page_url', 'total', 'url', 'from', 'to', 'pg');
$limit = (Input::get('limit') ? Input::get('limit') : '10');
$order_by = (Input::get('order') ? Input::get('order') : 'id');
$order = (Input::get('order_by') ? Input::get('order_by') : 'asc');
$page = (Input::get('pg') ? Input::get('pg') : 1);

$query = DB::table('cars');

foreach ($queryStrings as $key => $value) {
    $query->where($key, '=', $value);
}

$query->select('id', 'car', 'color', 'active');
$query->orderBy($order_by, $order);

$paginated = $query->paginate($limit, ['*'], 'pg', $page);

return response()->json($paginated,200);

感谢帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用appends()方法返回的LengthAwarePaginator提供的paginate()方法。因此,您只需添加以下行:

$paginated = $query->paginate($limit, ['*'], 'pg', $page);
$paginated->appends(Input::all());

return response()->json($paginated,200);

这将获取所有传递的输入值,并将它们附加到分页器生成的链接中。 appends()方法会对调用它的实例进行突变,这就是为什么您只需要对从paginate()获得的结果进行调用。