Как сделать фильтр на продуктов на laravel

118
17 июня 2021, 04:10

Проблемма вот такая. Есть у меня интернет магазин на Laravel 5.8. Мне там нужно сделать поиск из фильтрацией. Что уже сделано: 1) Есть форма на фронтенде, которая принимает запрос. Выдачу массива товара после поиска по слову регулирует такой класс

<?php 
namespace App\Http\Controllers; 
use Illuminate\Http\Request; 
use App\Products; 
 
public function search(){ 
$search = request()->query('search'); 
if($search){ 
            $products = 
             Products::where('title', 'LIKE', "%{$search}%")->get(); 
             /*на самом деле тут еще много кода до того как генерируется $products, но я укоротил, оставив самое основное*/ 
} else { 
            $products = []; 
        } 
return view('myview')->with('products', $products);

Все работает хорошо, но я сталкивиюсь с проблеммой когда потом хочу фильтровать результаты поиска. Для фильтрации у меня стоит другая форма которая использует другой Route:: Для фильтрации в этом же контроллере использую такой клас ( сверху request, products подключен, не буду дублировать).

public function filter(Request $request) 
    {  
      /*не понимаю как тут сделать всю логику*/ 
 
       return view('myview')->with('products', $products); 
     }

Второй клас на выходе мне должен возвращать уже отфильтрованные продукты. Не знаю как это сделать. С какими я проблеммами столкнулся. 1) После поиска в URL получаю такую строку /search?search=product1 ( я искал по имени product1) Я хочу чтобы после приминения фильтра по цене в URL уже была такая строка /search?search=product1/filter?minprice=0&maxprice=100 ( тут максимальная цена 100) Не понимаю как это сделать 2) После того как отрабатывает клас фильтра то весь массив сформирован в предидущем классе исчезает. Как сохранить результаты поиска и передать в сделующий клас?

READ ALSO
Подскажите по функции работы со строкой

Подскажите по функции работы со строкой

Подскажите пожалуйста как создать функцию Gol на php по обработке строки вида "36,67,90,90"Это минуты забитых голов в футбольном матче

112
Выставка в базу данных в массив

Выставка в базу данных в массив

В этом случае нужно добавит 5 строк в базу с 5 разных ID учеником, но у меня получило только последние один результат

107
Не работает sql запрос insert into

Не работает sql запрос insert into

в переменной conncet хранится подключение к sql

106
Как реализовать бесконечный цикл WebDriver на php?

Как реализовать бесконечный цикл WebDriver на php?

Как с помощью WebDriver на php реализовать цикл проверки и получения содержимого div?

114