Как соединить строки запроса на разбиение на страницы Laravel 4?
Как я могу добавить строку запроса на разбиение на страницы laravel 4?
, например: у меня есть список данных, и в этом же экране есть фильтр поиска. При отправке get запроса фильтра в списке url-адрес
http://localhost/lista-de-produtos?marca=1
,
данные, опубликованные на экране, но когда я иду на страницу 2 постраничной другая убирает параметр марка=1 в url-адрес и добавляет pag=2, то фильтр не работает.
Следующий код запроса:
$registros = Produtos::where(function ($query) {
if (Input::has('nome')) {
$nome = Input::get('nome');
$query->where('nome', 'LIKE', "%{$nome}%");
}
if (Input::has('marca')){
$marcaId = Input::get('marca');
$query->where('marca_id', '=', $marcaId);
}
})->paginate(20);
2 answers
В laravel есть метод с именем " appends
, где вы передаете массив, который будет представлять данные, которые будут вместе с atribute page
в url-адресе.
Например:
User::where('admin', '=', 0)->paginate()->appends(Input::except('page'));
В Этом случае Input::except
будет добавить все в query string текущей в его подкачки.
Это очень полезно в тех случаях, опросы подкачки, например, в Google.
, а не excepts, вы также можете использовать Input::all()
.
Обновлении
В новых версиях в Laravel 5, не было необходимости делать это. Но если вам необходимо, логика одинакова:
User::where('admin', '=', 0)->paginate()->appends($request->all());
Model Товары не знаете параметров, передаваемых в фильтрации. Чтобы провести идентифицировать их, нужно поручить его для передачи параметров в строительстве ссылки подкачки.
Это делается с помощью метода appends (См документации Laravel). Например, на лопатке, если вы используете так:
{{ $registros->links() }}
, То реализовать так:
{{ $registros->appends([
'nome' => Request::input('nome'),
'marca' => Request::input('marca'),
])->links() }}
Или так, если laravel 5.6+:
{{ $registros->appends(request()->all())->links() }}
, Либо непосредственно в model:
Produtos::when(...)->appends(request()->all())->paginate(20);
Таким образом, разбиение на страницы не будет включать в ключи массива в качестве параметров строки запроса из ссылки.