Laravel 5 Search и URL-адреса для разбивки на страницы вместе

У меня есть кнопка поиска и система разбивки на страницы. Они отлично работают. Но когда я что-то искал, страница была разбита на номера. После нажатия на следующую страницу. Поисковый запрос пропал. После этого все значения попадают на page2. Не искали значения.

Моя кнопка поиска меняет URL-адрес, например, /en/news?q=foo

Моя разбивка на страницы меняет URL-адрес (кстати по умолчанию) /en/news?page=2

Как я могу добавить это рядом? Или как решить проблему. Я открыт для любого решения.

Я использую для поиска.

public function scopeSearch($query, $search) {
    return $query->where('title', 'LIKE', '%' .$search. '%')
        ->orWhere('sub_body', 'like', '%' .$search. '%')
        ->orWhere('body', 'like', '%' .$search. '%');
}

Также это мой контроллер:

public function index (Request $request){

    $localeCode = LaravelLocalization::getCurrentLocale();
    $updates = Update::latest()->take(3)->get();
    $query = $request->get('q');
    if ($query){
        $new = $query ? News::search($query)->orderBy('id', 'desc')->paginate(10):News::all();
        return  view('frontend.news', compact('localeCode', 'updates', 'new', 'query'));
    }
    else
    {
        $new = News::orderBy('id', 'desc')->paginate(10);
        return  view('frontend.news', compact('localeCode', 'updates', 'new', 'query'));
    }

}

Я надеюсь, что смогу выразить свое собственное.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
449
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Это объясняется в документации для отображение результатов пагинации:

Appending To Pagination Links

You may append to the query string of pagination links using the appends method. For example, to append sort=votes to each pagination link, you should make the following call to appends:

{{ $users->appends(['sort' => 'votes'])->links() }}

Я нахожу ваш текущий код довольно запутанным. Думаю, можно это так переписать

public function index (Request $request){
    $localeCode = LaravelLocalization::getCurrentLocale();
    $updates = Update::latest()->take(3)->get();
    $query = $request->get('q');

    $new = $request->filled('q') ? News::search($query) : News::query();
    $new = $new->orderBy('id', 'desc')->paginate(10);

    return view('frontend.news', compact('localeCode', 'updates', 'new', 'query'));
}

и в представлении вам придется использовать

{{ $new->appends(['q' => $query])->links() }}

@ AliÖzen Я добавил еще код к ответу, может быть, он вам поможет. Причина, по которой я переписал метод, заключается в том, что вы в основном выполняли два раза одно и то же в разных построителях запросов, что может быть громоздким, если вы в будущем расширите функциональность разбитого на страницы списка (потому что вам всегда придется делать это дважды). С вышесказанным вы сможете делать все сразу.

Namoshek 31.03.2018 09:24

Поиск + пагинация сейчас работает отлично. Но я смотрю на твою прямо сейчас. Еще раз спасибо. Шахты очень сложные. Ты прав.

Ali Özen 31.03.2018 09:28
{{ $users->appends($_GET)->links() }}

которые добавляют все значение вашего фильтра в одну строку

Попробуйте использовать {{$ collection-> appends (request () -> all ()) -> links ()}}

Другие вопросы по теме