Laravel курс с нуля, база. 30. Шаблон Filter, фильтрация данных в Laravel

Laravel курс с нуля, база. 30. Шаблон Filter, фильтрация данных в Laravel

Laravel Creative

3 года назад

25,213 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

@user-ne6iw8tc9y
@user-ne6iw8tc9y - 21.11.2023 21:41

Спасибо за курс.

Ответить
@AxelMacaroff
@AxelMacaroff - 08.10.2023 16:54

Странно, что у автора сработал метод "public function categoryId"( PostFilter file), т.к. ищется же "category_id" из массива queryParams ... Но в целом методика очень любопытна. Автору респект.

Ответить
@artemunix5223
@artemunix5223 - 01.10.2023 11:02

раскрой эту тему глубже на более понятном примере

Ответить
@user-zc2gk1il8l
@user-zc2gk1il8l - 28.09.2023 00:27

Спасибо за урок! А как быть, если надо отфильтровать по нескольким id одного из параметров?

Ответить
@EanutiyDolbayyyb
@EanutiyDolbayyyb - 25.09.2023 20:46

И как в LIKE не пропустить SQL инжекцию ?

Ответить
@wickedtorpedo75
@wickedtorpedo75 - 21.09.2023 00:40

Чувствую себе ущербным, так как я уже 5-рыз сделал фильтр так же как на уровне в начале и никогда не додумался бы до создания такого фильтра отдельного, но у меня вопрос как сделать ещё проще когда в фильтрах имеется relation до 4-уровней вложений (меня волнует разделение кода на мелкие куски), я сам никогда не додумаюсь если ни кто не подскажет

Ответить
@user-qm5kd7ts4e
@user-qm5kd7ts4e - 18.09.2023 16:34

Звук в сраці

Ответить
@artemsergeev4833
@artemsergeev4833 - 01.09.2023 12:28

В laravel 10, чтобы увидеть результат функции dd($posts); нужно добавить метод get, а именно: $posts = Post::filter($filter)->get(); без данного метода выводится объект builder. Все понятно, если самому изучать каждый метод и смотреть откуда и какие приходят параметры. Хотелось бы посмотреть на реализацию фильтрации на странице с постами, а не только в виде виртуального кода.

Ответить
@user-vf7pc4tn9z
@user-vf7pc4tn9z - 04.07.2023 10:42

раскажи больше про этот шаблон где больше выборок

Ответить
@evgenn787
@evgenn787 - 08.06.2023 16:15

А есть урок где этот фильтр завязывают на кнопки, интерфейс управления? Подскажите пожалуйста номер урока )

Ответить
@allay138
@allay138 - 22.04.2023 20:13

Это услажненная реаелизация мног лишнего . Можно сделать намного проще

Ответить
@h3xx0r
@h3xx0r - 19.04.2023 15:38

Спасибо дружище, помог во многом разобраться.

Ответить
@jil_jir874
@jil_jir874 - 18.04.2023 18:54

Не знаю, но у меня фильтр не хочет работать

Ответить
@user-tl1hb6bp5d
@user-tl1hb6bp5d - 11.04.2023 20:35

Обращу ваше внимание на то, что если у вас в правилах валидации есть required, например 'title' => 'required|string' это приведет к ошибке "сервер выполнил переадрисацию слишком много раз" удалите просто required из правила

Ответить
@user-in8gl4rq4n
@user-in8gl4rq4n - 31.03.2023 14:26

Видосы огонь. Каждый пересматривал по несколько раз. Для тех кто никогда не сталкивался с ларавелом очень полезно. Но вот откуда и как заполняется AbstractFilter, Filterable, совершенно непонятно. Просто копипаст с видоса.

Ответить
@BookwormYevgen
@BookwormYevgen - 21.03.2023 17:08

А зачем тут FilterInterface?? И почему фильтр асбстрактный? Это же можно сделать все в одном классе? Какое практическое применение имеют эти абстракции в конкретно этом проекте?

Ответить
@andreyivanchenko6369
@andreyivanchenko6369 - 19.03.2023 15:58

Все работает - спасибо! но на этапе добавления самой формы отправки запросов столкнулся с некоторыми нюансами которых жаль что нет в видео - 1 ) Валидация всех данных - если оставлять пустые значение то работает в общем - но если фильтровать только по 1 параметру а указывать валидацию на все поля. Решил этот вопрос так в FilterRequest проверял\добавлял параметры таким способом if (request()->filled('date_to')) { $rules['date_to'] = 'date'; } и так для всех параметров 2). проверка текущего значение в самой форме old() не подходит так как сохраняет значение в сессии - использовал request()->input('date_to', '') 3) момент если есть форма с многими параметрами и отправляем все - получиться строка с пустыми значениям для этого проверял весь $request->all() if (in_array(null, $params)) { $filtered_params = array_filter($params, function ($value) { return !is_null($value); }); return redirect()->route('deposits.index', $filtered_params); } - возможно как-то по другому нужно но пока так

Ответить
@Morski1337
@Morski1337 - 15.03.2023 23:43

Как сбросить фильтр при перезагрузке страницы?

Ответить
@esca7a
@esca7a - 20.02.2023 13:50

Привет. Фильтрация получилась не такая гибкая как хотелось бы
Если мы передаем два параметра <title>, то поиск происходит по последнему. Что в этом случае ?

Ответить
@afmoviemakercorp.3512
@afmoviemakercorp.3512 - 14.02.2023 20:14

После добавления request в контроллер : "Сайт выполнил переадресацию слишком много раз."

Ответить
@100kgstyle9
@100kgstyle9 - 15.01.2023 14:49

Если у кого-то не работал route на /posts после добавления реквеста, проверьте, не стоит ли у вас в валидации 'required|string'. Если убрать реквайред, то всё начинает работать

Ответить
@salonsuloo
@salonsuloo - 14.01.2023 12:51

Крутой урок! Спасибо✊

Ответить
@pernik85
@pernik85 - 12.01.2023 18:02

Ну такое, на Yii1,2 это всё реализовано

Ответить
@Cadregich
@Cadregich - 28.12.2022 22:35

А как через форму отправить эту имитацию запроса, а не вводить в ручную?

Ответить
@alcoholic_monk
@alcoholic_monk - 26.12.2022 16:54

боже, это мне напомнило ужасные коды с ипользованием старых Jquery, как-то всё сложно :c

Ответить
@user-yd5sn2fj2t
@user-yd5sn2fj2t - 18.12.2022 10:38

А зачем каждый раз после альт + джей говорить Женя? В этом тайный смысл какой-то заложен?)

Ответить
@user-xc6kr5td9x
@user-xc6kr5td9x - 03.12.2022 16:22

невнимательно читал комменты, та же проблема с required

Ответить
@blackwood3408
@blackwood3408 - 29.11.2022 11:23

Как быть если нужно отфильтровать по нескольким категориям, а не по одной?

Ответить
@user-yt2ir6ki9f
@user-yt2ir6ki9f - 23.11.2022 17:48

В функциях title, content
$builder->where('title', 'like', "%{$value}%");
value в двойных кавычках одинарные не работают!
может кто подскажет: не находит трэйт, хотя ошибок VSCode не видит? Все namespace прописаны
если функцию прописываю в Post все работает...

Ответить
@user-yt2ir6ki9f
@user-yt2ir6ki9f - 22.11.2022 03:10

Спасибо за уроки

Ответить
@RusIvan2022
@RusIvan2022 - 07.11.2022 23:09

есть пример где нужно получить по условию из связанной таблице?

Ответить
@RusIvan2022
@RusIvan2022 - 07.11.2022 17:11

Немного поправлю на query а наверное понятьнее будет query builder

Ответить
@evgeniysergeev2708
@evgeniysergeev2708 - 25.10.2022 14:50

У кого будет ошибка ArgumentCountError
указываете метод validate, а нужно validateD!
Спасибо за уроки.

Ответить
@trvtrv3172
@trvtrv3172 - 14.10.2022 16:48

УРОК НАЧИНАЕТСЯ С 10 МИНУТЫ АХХАХА НЕ БЛАГОДАРИТЕ

Ответить
@AndreyMoroz
@AndreyMoroz - 14.10.2022 09:36

Подскажите как сделать в фильтре лимит вывода страниц при пагинации ?

Ответить
@spitzer4077
@spitzer4077 - 10.10.2022 13:32

Без файлов из описания не получилось бы, всё работает, но есть вопросы:
1) Зачем городить такой колхоз если в 6 строк в целом работали?
2) Если так правильно, почему это не является базовым функционалом Laravel?
3) Поля title, content, etc.. явно упоминались раза 4-5, а вам не кажется что это, говоря мягко, не универсально? Ещё раз, для пагинации прописывать в разных файлах поля по 4-5 раз.. уровень удобства - запредельный.

Ответить
@sergeyromanov1920
@sergeyromanov1920 - 10.10.2022 12:42

Спасибо за урок. Слишком поздно заметил ссылку на файлы ) практически все перепечатал, что было в видео. А так как в видосе не было видно функции before - то возникла ошибка. После же обнаружения файлов в ссылке под видео, проблему удалось решить и все заработало. Зря конечно автор не завел git-репку по всем урокам, хорошо хоть файлы есть, а то думал вообще - домузгуй это сам с before будет ) Просто у других уроков ссылки на файл не было, и уже не ожидалась, но теперь буду иметь в виду.

Ответить
@bohdanafanasiev3433
@bohdanafanasiev3433 - 17.09.2022 13:33

Как я люблю эти фразы в курсе, по типу: "Но это все не эфективно..."

Ответить
@irinatagaeva3371
@irinatagaeva3371 - 08.09.2022 19:13

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

Ответить
@vasyaklishch4184
@vasyaklishch4184 - 06.09.2022 21:21

ВОГОНЬ, БРАТАН ПІДПИСКА І ЛАЙК.

Ответить
@eugenevorontsov7049
@eugenevorontsov7049 - 31.08.2022 13:08

ВОПРОС, пробую ваш шаблон, почему-то не работает если в адресной строке пишу Laravel/posts( что бы вывел всю таблицу), перекидывает на главную, а вот когда пишу Laravel/posts?title=dog&content=dog РАБОТАЕТ( минимум когда два аргумента пишу), если даже только title=dog НЕ РАБОТАЕТ

Ответить
@user-be8fw3yj6q
@user-be8fw3yj6q - 29.08.2022 16:41

добрый день! подскажите пожалуйста, если все сделал правильно, но, если задать параметр, например /post?id=1, при попытке его получить выдается пустой массив

Ответить
@jd-chnl
@jd-chnl - 23.08.2022 12:38

Здравствуйте! Спасибо за материал, интересно, познавательно и по сути👍 если можно поясните пару нюансов:
- для чего создавать интерфейс, сли есть абстрактный класс, который будет корневым так или иначе?
- $filter = app()->make(PostFilter::class, ['queryParams' => $data]); на сколько знаю app->make используется для внедрения зависимотсей из настроек контейнера, но тут это не актуально поскольку параметры передаете как в обычный конструктор - как по мне это лишнее выполнение кода. Это просто к слову, я читал ответ про миграцию решения с момента его появления)
- в классе PostFilter вы зарегистрировали константы, но не использовали их. Правильно ли я понял что они должны быть использованы в колбеках в билбере в поле column? строки 23, 29, 35,
Еще раз спасибо, материал мне понравился!

Ответить
@Sechyas
@Sechyas - 28.07.2022 09:34

В трейте Filterable в аргументах передается FilterInterface, и в $filter получаем объект PostFilter. А если этот PostFilter и передавать в аргументе, получаем тот же объект, в чем интересно отличия?

Ответить
@Sechyas
@Sechyas - 28.07.2022 09:31

Интересно, чем отличаются этот способ создания объекта
$filter = app()->make(PostFilter::class, ['queryParams' => $data]);
от этого
$filter = new PostFilter($data);
может в следующих уроках станет понятней

Ответить
@ringnull
@ringnull - 17.07.2022 20:26

У меня не прилетают гет параметры из урла. Что делать?

Ответить
@aleksandrpushnin2244
@aleksandrpushnin2244 - 17.07.2022 11:00

На работе фильтр же в несколько строчек делается) laravel позволяет

Ответить