Как соединить строки запроса на разбиение на страницы 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);
Author: Wallace Maxters, 2015-12-01

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());
 4
Author: Wallace Maxters, 2020-06-11 14:45:34

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);

Таким образом, разбиение на страницы не будет включать в ключи массива в качестве параметров строки запроса из ссылки.

 1
Author: Ricardo Pereira Dias, 2019-10-11 11:59:39