добавить параметры для нумерации страниц - PullRequest
2 голосов
/ 13 июня 2019

в проект 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 Ответ

2 голосов
/ 13 июня 2019

Вы можете использовать метод appends(), доступный из LengthAwarePaginator, возвращенного методом paginate(). Таким образом, вы можете просто добавить эту строку:

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

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

Это позволит получить все входные значения и добавить их к ссылкам, сгенерированным paginator. Метод appends() изменяет экземпляр, в котором он вызывается, поэтому вам просто нужно вызвать его для результата, полученного из paginate().

...