Делаем фильтры правильно на PHP Laravel

Поділитися
Вставка
  • Опубліковано 20 вер 2024

КОМЕНТАРІ • 61

  • @asyrtmach
    @asyrtmach 2 роки тому +8

    Спасибо, крутая идея!
    Чтоб использовать множественную фильтрацию как задумывалось типа /?category_id=1,2,3
    в классе QueryFilter.php в методе apply() делаем так
    call_user_func_array([$this, $name], [array_filter($this->paramToArray($value))]);
    и уже в методе реализации самого фильтра например в методе category_id() меняем where() на whereIn()

    • @NikolayGavrilov-i3r
      @NikolayGavrilov-i3r Рік тому

      У меня почему-то только по последнему значение происходит фильтрация, а не по нескольким.

  • @Amanel666-scald
    @Amanel666-scald 3 роки тому +3

    Спасибо за видео Очень понятно раньше когда начал изучать Ларавел сильно горел, но с твоими видео Ларавел нравится все больше и больше Спасибо за Уроки

  • @Alexandr6564
    @Alexandr6564 3 роки тому +1

    Ждем еще видео!!! А так клевый способ, спасибо)

  • @ЮГИД
    @ЮГИД 3 роки тому +3

    Очень интересный подход к обучению)) вот код - но говорить о нем я ниче не буду ))

  • @aleksandrsh3893
    @aleksandrsh3893 4 місяці тому

    Дякую, цікава інфа

  • @gavrilovsrg
    @gavrilovsrg 3 роки тому +5

    В следующем видео если можно покажи как реализовать EAV (если не ошибаюсь) в продолжение темы фильтров в Laravel. Чаще в магазинах не однотипные товары.

  • @-it-kidys
    @-it-kidys 3 роки тому +4

    Спасибо) было бы полезно про урок, где фильтры с помощью Vuejs

    • @VladislavGroniuk
      @VladislavGroniuk  3 роки тому +1

      На вью джс это не сложно делаеться) хотел показать именно логику на бекенде)

  • @KibokoKwembamba
    @KibokoKwembamba 3 роки тому

    Как всегда супер видос! Помог вспомнить готовое решение для моей задачи! Но для фильтрации, которую ты делаешь есть уже spatie/laravel-query-builder

  • @Pro100PatroN
    @Pro100PatroN 2 роки тому

    Просто супер!

  • @НурболБирманов
    @НурболБирманов 5 місяців тому

    спасибо все работает 👍

  • @ВирджинияВульф-я9ь
    @ВирджинияВульф-я9ь 7 місяців тому

    Делаю архитектуру проекта на Laravel/ Пока самое внятное видео.

  • @maxyc.webber
    @maxyc.webber 3 роки тому +2

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

    • @maxyc.webber
      @maxyc.webber 3 роки тому

      так же не раскрыто для чего вам парам ту эррэй

  • @timofeysibirskiy443
    @timofeysibirskiy443 3 роки тому +1

    Очень классный метод. Беру на вооружение. Однако есть небольшие замечания.
    1) Папку Filters лучше закидывать в App\Http\, а не в App\.
    2) Не ясно зачем нужен метод paramToArray() и $delimeter к нему. Я их вырезал и ничего не пострадало.
    3) Нельзя указывать фильтр входным параметром в метод контроллера. Понимаю, что это сделано для простого объяснения, но тут есть новички, которые будут так делать, не понимая что это не правильно. А неправильно это потому, что тогда некуда помещать валидацию. Вернее есть куда - в конструктор фильтра, но в таком случае теряется та самая единственность обязанностей. Получается, что фильтр не только фильтрует, но и валидирует. Тут вижу два варианта - создавать фильтр в теле метода контроллера, либо же создавать его в скопе. Второе спорно.

    • @ВадимКрутетцкий
      @ВадимКрутетцкий 3 роки тому

      Почему бы не реализовать это все через сервис, например? Зачем вообще контроллер взаимодействует с фильтрами напрямую? Что если эту задачу делегировать одному из методов сервиса,м?

    • @timofeysibirskiy443
      @timofeysibirskiy443 3 роки тому

      ​@@ВадимКрутетцкий Как именно Вы хотите это реализовать через сервис? В чем его суть?

    • @asyrtmach
      @asyrtmach 2 роки тому +1

      Пункт 2 просто не дописан, чтоб использовать множественную фильтрацию как задумывалось типа /?category_id=1,2,3
      в классе QueryFilter.php в методе apply() делаем так
      call_user_func_array([$this, $name], [array_filter($this->paramToArray($value))]);
      и уже в методе реализации самого фильтра например в методе category_id() меняем where() на whereIn()

    • @Dmitry_RS
      @Dmitry_RS 2 роки тому +1

      А не подскажите как создать фильтр в теле контроллера?
      public function __invoke(FilterRequest $request) {
      $data = $request->validated();
      $filter = new ItemFilter($data);
      Так не получается.... Я недавно стал изучать Laravel, заранее прошу прощения за возможно глупый вопрос...

    • @timofeysibirskiy443
      @timofeysibirskiy443 2 роки тому

      @@Dmitry_RS а что пишет? Ошибку выдает?

  • @dreamypioneer3760
    @dreamypioneer3760 2 роки тому +1

    Очень годный контент!!!! Только есть один вопрос, в строке "return $this->builder->where('id', $id);" всё легко и просто, а что если у меня у товара может быть много категорий и я использую связь многие ко многим(я думаю ты прекрасно знаешь, что это такое), подскажи пж, как мне выбирать товары, которые подходят под эту категорию. Вызвать связь categories выдаёт ошибку. Не надеюсь, что получу ответ, но попробовать можно. Ещё раз, очень хороший урок.

  • @alexbork8659
    @alexbork8659 3 роки тому

    Супер .........!!!!!!

  • @SergeiKlishin
    @SergeiKlishin 3 роки тому +1

    Все супер, молодец!
    Но, в видео ты упомянул ""OLID, но при этом в контролере ProductController у тебя почему-то забираются и категории товаров =D Здесь я бы рекомендовал использовать View Composer, чтобы отображать категории товаров, потому что потенциально у тебя могут добавиться теги, рейтинги, цены, производители и много других фильтров, и очень не правильно все эти фильтры выкидывать из одного контроллера. Уж если упомянул принципы, используй их

    • @VladislavGroniuk
      @VladislavGroniuk  3 роки тому

      Спасибо большое за крутую инфу откоторой я даже не знал. Я никогда не говорю что я профи, и мне огого есть куда рости. Благодарая таким как ты я взнвю очень много нового! Спасибо)

  • @СултанБакиров-п6ъ
    @СултанБакиров-п6ъ 3 роки тому

    Отличное видео! Спасибо! А есть возможность сделать видео по живому поиску без нажатия на кнопку поиска и фильтра?

  • @andriusregalas4787
    @andriusregalas4787 2 роки тому

    Все хорошо, только код, который в модели пишется в trait надо добавить, так вместо копирования, просто можно будет использовать каждый раз через Use.

  • @user-qt9xw1cd5w
    @user-qt9xw1cd5w Рік тому +1

    Ребят, подскажите, пожалуйста.
    Выдаёт такую ошибку 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.
    Уже с ума схожу из-за неё 🥲

  • @quantum4804
    @quantum4804 Рік тому

    он все условия для выборки которые собираться в этом фильтре помещает в одни скобки после "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"??

  • @SemyonF89
    @SemyonF89 7 місяців тому

    Предположу, что сформированный запрос работает без конкатенации фильтров - верно? если так, понадобится обвязка логики AND

  • @togrulshahbazov1579
    @togrulshahbazov1579 2 роки тому

    Эслибы не последнее две минуты))) код не сработал вы не заметили
    исправил но не уверен думаю так должно быть
    return $this->builder->where(function ($query) use ($search_string){
    return $query
    ->where('name', 'LIKE', '%' . $search_string . '%')
    ->orWhere('description', 'LIKE', '%' . $search_string . '%');
    });

  • @delfinn
    @delfinn 3 роки тому

    Влад, добрый день! А как вы начинали учить этот фреймворк и какой материал (книга, видеокурс) посоветовали для Laravel-новичков с базовыми знаниями PHP?

    • @VladislavGroniuk
      @VladislavGroniuk  3 роки тому

      Здравствуйте! Можете начать изучение с моего видко ларавел за час. А дальше пробовать делать что-то самостоятельно. Нужно придумать задачу себе и решать её. Например создание блога с регистрацией и личным квбинетом.

    • @developerninja619
      @developerninja619 2 роки тому

      @@VladislavGroniuk здравствуйте. Недавно начал изучать Laravel, но немного отталкивает то, что Laravel, насколько я понял, достаточно сильно меняется от версии к версии. Вопрос: так ли критичны изменения? Легко ли адаптироваться к этим изменениям?

    • @developerninja619
      @developerninja619 2 роки тому

      @@VladislavGroniuk И не знаете ли вы в Yii2 изменения такие же по критичности или меньше/сильнее?

  • @syracuse4612
    @syracuse4612 Рік тому

    Как сделать фильтр для many to many , когда через отдельную таблица связи идут?

  • @esp2644
    @esp2644 3 роки тому

    А отдельное видео по ajax будет?

  • @МихаилКравцов-ж6ш
    @МихаилКравцов-ж6ш 3 роки тому

    Сделай динамические фильтры без кнопки)

  • @Isiah-Thomas
    @Isiah-Thomas 3 роки тому

    Как в таком случае привязывать Валидацию через ...Request в параметрах экшена Index?

  • @10ka_fin
    @10ka_fin 2 роки тому

    Спасибо за урок. Может кто подскажет, что делать если в фильтруемой таблице хранится код поставщика, а хочется делать поиск по части его имени? В модели прописана связь belongsTo с таблицей поставщика.

  • @Геннадий-с5э
    @Геннадий-с5э 5 місяців тому

    Круто, но можно доработать)))

  • @VladislavVitalevich
    @VladislavVitalevich 2 роки тому

    по шаблону пагинации где можно ознакомиться?? подскажите плс ...

  • @trvtrv3172
    @trvtrv3172 Рік тому +1

    Зачем нужен такой ролик, если ты ничего не поясняешь? Типо челы которые уже знают как это работает сами смогут подставить нужные параметры, а которые не знают им это на№й не нужно. Боже ни одного адкватного блогера по ларавел в ру среде нет

  • @androideasycoding
    @androideasycoding 3 роки тому

    Было бы круто на чистом php посмотреть с помощью pdo

  • @MikhailBurlet
    @MikhailBurlet 2 роки тому

    А как быть если фильтры динамические?

  • @santiagozarpado1145
    @santiagozarpado1145 3 роки тому

    где вызываетя функция paramToArray?

  • @sergiybunin
    @sergiybunin 2 роки тому +1

    Забавный момент - если не смотреть первые 5 минут, то вы вообще ничего не пропустите)

  • @back_to_life0
    @back_to_life0 2 роки тому

    LIKE %% - мдаааа бля... реально правильно.
    FULLTEXT есть такое.

  • @santiagozarpado1145
    @santiagozarpado1145 3 роки тому

    array_filter([$value]) это не тоже самое что [$value]?

    • @asyrtmach
      @asyrtmach 2 роки тому

      тоже самое, array_filter() еще и отфильтрует пустые элементы массива

  • @asadaa3095
    @asadaa3095 2 роки тому

    Пожалуйста сделай тоже telegram bot в laravel

  • @fnamelname105
    @fnamelname105 2 роки тому

    как сделать фильтр по дате? отобразить записи в диапазоне дат

  • @eugeney627
    @eugeney627 3 роки тому

    Спасибо за видео А где же ссылка на репозиторий ))

    • @VladislavGroniuk
      @VladislavGroniuk  3 роки тому

      Спасибо) забыл, но уже вставил)

  • @richbich4742
    @richbich4742 3 роки тому

    Автору респект!. Вот есть чуть более подробное видео об этом методе создания фильтров ua-cam.com/video/cL1eXKsnRJI/v-deo.html

  • @antondavydov3651
    @antondavydov3651 3 роки тому +1

    Чувак завязывай, это не твое.

    • @VladislavGroniuk
      @VladislavGroniuk  3 роки тому

      Так и сделаю наверное(

    • @ВадимКрутетцкий
      @ВадимКрутетцкий 3 роки тому +2

      Зачем подобные комментарии писать? Кому-то лучше от этого стало?