给分页添加参数

add parameters to pagination

进入一个 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);

感谢您的帮助。

您可以使用 paginate() 方法返回的 LengthAwarePaginator 中可用的 appends() 方法。所以你可以简单地添加这一行:

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

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

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

获得的结果上调用它的原因