Спасибо, крутая идея! Чтоб использовать множественную фильтрацию как задумывалось типа /?category_id=1,2,3 в классе QueryFilter.php в методе apply() делаем так call_user_func_array([$this, $name], [array_filter($this->paramToArray($value))]); и уже в методе реализации самого фильтра например в методе category_id() меняем where() на whereIn()
Спасибо за видео Очень понятно раньше когда начал изучать Ларавел сильно горел, но с твоими видео Ларавел нравится все больше и больше Спасибо за Уроки
В следующем видео если можно покажи как реализовать EAV (если не ошибаюсь) в продолжение темы фильтров в Laravel. Чаще в магазинах не однотипные товары.
пока рассказывал допустил кучу ошибок ) но за тему спасибо. вопрос был бы лучше раскрыт, если бы еще добавили валидацию. ибо новичкам сложно будет совместить фильтры и реквесты
Очень классный метод. Беру на вооружение. Однако есть небольшие замечания. 1) Папку Filters лучше закидывать в App\Http\, а не в App\. 2) Не ясно зачем нужен метод paramToArray() и $delimeter к нему. Я их вырезал и ничего не пострадало. 3) Нельзя указывать фильтр входным параметром в метод контроллера. Понимаю, что это сделано для простого объяснения, но тут есть новички, которые будут так делать, не понимая что это не правильно. А неправильно это потому, что тогда некуда помещать валидацию. Вернее есть куда - в конструктор фильтра, но в таком случае теряется та самая единственность обязанностей. Получается, что фильтр не только фильтрует, но и валидирует. Тут вижу два варианта - создавать фильтр в теле метода контроллера, либо же создавать его в скопе. Второе спорно.
Почему бы не реализовать это все через сервис, например? Зачем вообще контроллер взаимодействует с фильтрами напрямую? Что если эту задачу делегировать одному из методов сервиса,м?
Пункт 2 просто не дописан, чтоб использовать множественную фильтрацию как задумывалось типа /?category_id=1,2,3 в классе QueryFilter.php в методе apply() делаем так call_user_func_array([$this, $name], [array_filter($this->paramToArray($value))]); и уже в методе реализации самого фильтра например в методе category_id() меняем where() на whereIn()
А не подскажите как создать фильтр в теле контроллера? public function __invoke(FilterRequest $request) { $data = $request->validated(); $filter = new ItemFilter($data); Так не получается.... Я недавно стал изучать Laravel, заранее прошу прощения за возможно глупый вопрос...
Очень годный контент!!!! Только есть один вопрос, в строке "return $this->builder->where('id', $id);" всё легко и просто, а что если у меня у товара может быть много категорий и я использую связь многие ко многим(я думаю ты прекрасно знаешь, что это такое), подскажи пж, как мне выбирать товары, которые подходят под эту категорию. Вызвать связь categories выдаёт ошибку. Не надеюсь, что получу ответ, но попробовать можно. Ещё раз, очень хороший урок.
Все супер, молодец! Но, в видео ты упомянул ""OLID, но при этом в контролере ProductController у тебя почему-то забираются и категории товаров =D Здесь я бы рекомендовал использовать View Composer, чтобы отображать категории товаров, потому что потенциально у тебя могут добавиться теги, рейтинги, цены, производители и много других фильтров, и очень не правильно все эти фильтры выкидывать из одного контроллера. Уж если упомянул принципы, используй их
Спасибо большое за крутую инфу откоторой я даже не знал. Я никогда не говорю что я профи, и мне огого есть куда рости. Благодарая таким как ты я взнвю очень много нового! Спасибо)
Ребят, подскажите, пожалуйста. Выдаёт такую ошибку App\Models\Post::scopeFilter(): Argument #1 ($builder) must be of type PhpParser\Builder, Illuminate\Database\Eloquent\Builder given, called in C:\OSPanel\domains\example-app\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 1628. Уже с ума схожу из-за неё 🥲
он все условия для выборки которые собираться в этом фильтре помещает в одни скобки после "from table where ( id in 5 or where status = 4 and contry_id =4 )" что приводит к некорректной работе , как сделать так , чтобы каждое условие после череp and помещалось в новые скобки "from table where ( id in 5 or where status = 4 ) and contry_id =4"??
Эслибы не последнее две минуты))) код не сработал вы не заметили исправил но не уверен думаю так должно быть return $this->builder->where(function ($query) use ($search_string){ return $query ->where('name', 'LIKE', '%' . $search_string . '%') ->orWhere('description', 'LIKE', '%' . $search_string . '%'); });
Влад, добрый день! А как вы начинали учить этот фреймворк и какой материал (книга, видеокурс) посоветовали для Laravel-новичков с базовыми знаниями PHP?
Здравствуйте! Можете начать изучение с моего видко ларавел за час. А дальше пробовать делать что-то самостоятельно. Нужно придумать задачу себе и решать её. Например создание блога с регистрацией и личным квбинетом.
@@VladislavGroniuk здравствуйте. Недавно начал изучать Laravel, но немного отталкивает то, что Laravel, насколько я понял, достаточно сильно меняется от версии к версии. Вопрос: так ли критичны изменения? Легко ли адаптироваться к этим изменениям?
Спасибо за урок. Может кто подскажет, что делать если в фильтруемой таблице хранится код поставщика, а хочется делать поиск по части его имени? В модели прописана связь belongsTo с таблицей поставщика.
Зачем нужен такой ролик, если ты ничего не поясняешь? Типо челы которые уже знают как это работает сами смогут подставить нужные параметры, а которые не знают им это на№й не нужно. Боже ни одного адкватного блогера по ларавел в ру среде нет
Спасибо, крутая идея!
Чтоб использовать множественную фильтрацию как задумывалось типа /?category_id=1,2,3
в классе QueryFilter.php в методе apply() делаем так
call_user_func_array([$this, $name], [array_filter($this->paramToArray($value))]);
и уже в методе реализации самого фильтра например в методе category_id() меняем where() на whereIn()
У меня почему-то только по последнему значение происходит фильтрация, а не по нескольким.
Спасибо за видео Очень понятно раньше когда начал изучать Ларавел сильно горел, но с твоими видео Ларавел нравится все больше и больше Спасибо за Уроки
Ждем еще видео!!! А так клевый способ, спасибо)
Очень интересный подход к обучению)) вот код - но говорить о нем я ниче не буду ))
Дякую, цікава інфа
В следующем видео если можно покажи как реализовать EAV (если не ошибаюсь) в продолжение темы фильтров в Laravel. Чаще в магазинах не однотипные товары.
Спасибо) было бы полезно про урок, где фильтры с помощью Vuejs
На вью джс это не сложно делаеться) хотел показать именно логику на бекенде)
Как всегда супер видос! Помог вспомнить готовое решение для моей задачи! Но для фильтрации, которую ты делаешь есть уже spatie/laravel-query-builder
Просто супер!
спасибо все работает 👍
Делаю архитектуру проекта на Laravel/ Пока самое внятное видео.
пока рассказывал допустил кучу ошибок )
но за тему спасибо.
вопрос был бы лучше раскрыт, если бы еще добавили валидацию. ибо новичкам сложно будет совместить фильтры и реквесты
так же не раскрыто для чего вам парам ту эррэй
Очень классный метод. Беру на вооружение. Однако есть небольшие замечания.
1) Папку Filters лучше закидывать в App\Http\, а не в App\.
2) Не ясно зачем нужен метод paramToArray() и $delimeter к нему. Я их вырезал и ничего не пострадало.
3) Нельзя указывать фильтр входным параметром в метод контроллера. Понимаю, что это сделано для простого объяснения, но тут есть новички, которые будут так делать, не понимая что это не правильно. А неправильно это потому, что тогда некуда помещать валидацию. Вернее есть куда - в конструктор фильтра, но в таком случае теряется та самая единственность обязанностей. Получается, что фильтр не только фильтрует, но и валидирует. Тут вижу два варианта - создавать фильтр в теле метода контроллера, либо же создавать его в скопе. Второе спорно.
Почему бы не реализовать это все через сервис, например? Зачем вообще контроллер взаимодействует с фильтрами напрямую? Что если эту задачу делегировать одному из методов сервиса,м?
@@ВадимКрутетцкий Как именно Вы хотите это реализовать через сервис? В чем его суть?
Пункт 2 просто не дописан, чтоб использовать множественную фильтрацию как задумывалось типа /?category_id=1,2,3
в классе QueryFilter.php в методе apply() делаем так
call_user_func_array([$this, $name], [array_filter($this->paramToArray($value))]);
и уже в методе реализации самого фильтра например в методе category_id() меняем where() на whereIn()
А не подскажите как создать фильтр в теле контроллера?
public function __invoke(FilterRequest $request) {
$data = $request->validated();
$filter = new ItemFilter($data);
Так не получается.... Я недавно стал изучать Laravel, заранее прошу прощения за возможно глупый вопрос...
@@Dmitry_RS а что пишет? Ошибку выдает?
Очень годный контент!!!! Только есть один вопрос, в строке "return $this->builder->where('id', $id);" всё легко и просто, а что если у меня у товара может быть много категорий и я использую связь многие ко многим(я думаю ты прекрасно знаешь, что это такое), подскажи пж, как мне выбирать товары, которые подходят под эту категорию. Вызвать связь categories выдаёт ошибку. Не надеюсь, что получу ответ, но попробовать можно. Ещё раз, очень хороший урок.
Супер .........!!!!!!
Все супер, молодец!
Но, в видео ты упомянул ""OLID, но при этом в контролере ProductController у тебя почему-то забираются и категории товаров =D Здесь я бы рекомендовал использовать View Composer, чтобы отображать категории товаров, потому что потенциально у тебя могут добавиться теги, рейтинги, цены, производители и много других фильтров, и очень не правильно все эти фильтры выкидывать из одного контроллера. Уж если упомянул принципы, используй их
Спасибо большое за крутую инфу откоторой я даже не знал. Я никогда не говорю что я профи, и мне огого есть куда рости. Благодарая таким как ты я взнвю очень много нового! Спасибо)
Отличное видео! Спасибо! А есть возможность сделать видео по живому поиску без нажатия на кнопку поиска и фильтра?
Все хорошо, только код, который в модели пишется в trait надо добавить, так вместо копирования, просто можно будет использовать каждый раз через Use.
Ребят, подскажите, пожалуйста.
Выдаёт такую ошибку App\Models\Post::scopeFilter(): Argument #1 ($builder) must be of type PhpParser\Builder, Illuminate\Database\Eloquent\Builder given, called in C:\OSPanel\domains\example-app\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 1628.
Уже с ума схожу из-за неё 🥲
он все условия для выборки которые собираться в этом фильтре помещает в одни скобки после "from table where ( id in 5 or where status = 4 and contry_id =4 )" что приводит к некорректной работе , как сделать так , чтобы каждое условие после череp and помещалось в новые скобки "from table where ( id in 5 or where status = 4 ) and contry_id =4"??
Предположу, что сформированный запрос работает без конкатенации фильтров - верно? если так, понадобится обвязка логики AND
Эслибы не последнее две минуты))) код не сработал вы не заметили
исправил но не уверен думаю так должно быть
return $this->builder->where(function ($query) use ($search_string){
return $query
->where('name', 'LIKE', '%' . $search_string . '%')
->orWhere('description', 'LIKE', '%' . $search_string . '%');
});
Влад, добрый день! А как вы начинали учить этот фреймворк и какой материал (книга, видеокурс) посоветовали для Laravel-новичков с базовыми знаниями PHP?
Здравствуйте! Можете начать изучение с моего видко ларавел за час. А дальше пробовать делать что-то самостоятельно. Нужно придумать задачу себе и решать её. Например создание блога с регистрацией и личным квбинетом.
@@VladislavGroniuk здравствуйте. Недавно начал изучать Laravel, но немного отталкивает то, что Laravel, насколько я понял, достаточно сильно меняется от версии к версии. Вопрос: так ли критичны изменения? Легко ли адаптироваться к этим изменениям?
@@VladislavGroniuk И не знаете ли вы в Yii2 изменения такие же по критичности или меньше/сильнее?
Как сделать фильтр для many to many , когда через отдельную таблица связи идут?
А отдельное видео по ajax будет?
Сделай динамические фильтры без кнопки)
Как в таком случае привязывать Валидацию через ...Request в параметрах экшена Index?
Спасибо за урок. Может кто подскажет, что делать если в фильтруемой таблице хранится код поставщика, а хочется делать поиск по части его имени? В модели прописана связь belongsTo с таблицей поставщика.
Круто, но можно доработать)))
по шаблону пагинации где можно ознакомиться?? подскажите плс ...
Зачем нужен такой ролик, если ты ничего не поясняешь? Типо челы которые уже знают как это работает сами смогут подставить нужные параметры, а которые не знают им это на№й не нужно. Боже ни одного адкватного блогера по ларавел в ру среде нет
Было бы круто на чистом php посмотреть с помощью pdo
А как быть если фильтры динамические?
где вызываетя функция paramToArray?
Забавный момент - если не смотреть первые 5 минут, то вы вообще ничего не пропустите)
LIKE %% - мдаааа бля... реально правильно.
FULLTEXT есть такое.
array_filter([$value]) это не тоже самое что [$value]?
тоже самое, array_filter() еще и отфильтрует пустые элементы массива
Пожалуйста сделай тоже telegram bot в laravel
как сделать фильтр по дате? отобразить записи в диапазоне дат
Да)
Спасибо за видео А где же ссылка на репозиторий ))
Спасибо) забыл, но уже вставил)
Автору респект!. Вот есть чуть более подробное видео об этом методе создания фильтров ua-cam.com/video/cL1eXKsnRJI/v-deo.html
Чувак завязывай, это не твое.
Так и сделаю наверное(
Зачем подобные комментарии писать? Кому-то лучше от этого стало?