Size: a a a

2021 June 21

MW

Maxyc Webber in Laravel Pro
ой можно я на тему фильтрации немного много текста приложу? ) с картинками
источник

А

Андрей in Laravel Pro
канеш, очень интересно, может интереснее реализация
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
насчет билдера
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
ща покажу как я сделал
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
сделал объект фильтра
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
он написан на пхп8 потому немного странное обьявление свойств
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
вобщем , ты знаком с DI контейнерами?
тут на вход поступает текущий реквест от пользователя. затем есть метод применения фльтров
(багу нашел. этот класс должен быть абстрактным.)
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
вобщем. в том же каталоге у меня есть фильтры по каждой сущности. в моем примере это фильтр продуктов. мы наследуемся от объекта на прошлом скрине.

создаем методы, например q, title, category_id

они должны иметь те же названия, что приходят в реквесте от пользователя. например, я хочу отфильтровать по названию товара. делаю гет запрос ?title=text
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
и глянь первый скрин. в методе apply  мы пробегаемся по всем входящим параметрам от пользователя. проверяем, если найден метод в нашем классе ( в данном случае продуктфильтер, тк мы с ним работаем) и выполняем его.
в нашем случае мы ищем по title потому будет вызван метод title
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
в этом методе мы билдером добавляем запрос фильтрации по этому полю
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
с category_id тоже все ясно.
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
но иногда быывает нужно сделать какой то общий поиск. я вот сделал метод q и когда в реквесте приходит ?q=text то выполняется именно этот метод , который формирует нужный нам запрос.
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
запросы можно компоновать
например
?title=text&category_id=1

метод apply пробежится по каждому найденному методу title() category_id() и сформирует запрос какой тебе требуется
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
так, теперь как с этим работать
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
оч просто
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
нам просто надо указать ProductFilter в зависимостях нашего метода.
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
ой в моем случае я еще в репозиторий вынес. сейчас покажу и его
источник

MW

Maxyc Webber in Laravel Pro
Переслано от Maxyc Webber
источник