Привет всем, это Ади.
Я хотел поделиться с вами своим простым решением для поиска, фильтрации и сортировки данных в Laravel.

Вот изображение того, что мы собираемся построить. Первый ввод предназначен для поиска, второй ввод — выбор столбца для сортировки, третий — выбор способа сортировки, и, наконец, у нас есть раскрывающийся список, чтобы выбрать, сколько элементов мы хотим на странице.

Этот виджет я создал для своего стороннего проекта — LaravelCollections.com

Вы можете найти весь код для этого руководства на this Github Gist.

TLDR;

Мое решение довольно простое, как в части пользовательского интерфейса, так и в управляющей логике. Часть пользовательского интерфейса представляет собой горизонтальную форму с методом GET на той же странице, таким образом, при нажатии кнопки «Фильтр» форма перенаправляется на текущую страницу с каждым полем ввода в качестве параметров запроса.

Логика в контроллере тоже достаточно проста. Мы проверяем эти параметры запроса и используем их для соответствующей фильтрации данных из модели.

В этом суть моего решения. Я более подробно расскажу о примерах кода ниже.

Контроллер

Начнем с контроллера. Логика здесь довольно проста.

Как вы заметили, мы инициализируем 4 переменные данными по умолчанию. Затем мы проверяем, есть ли у запроса какие-либо параметры, если да, то мы устанавливаем параметры как данные переменных.

Когда мы закончим проверку и установку параметра, мы будем искать, сортировать и разбивать на страницы модель пользователя (в данном случае это может быть любая модель). Затем мы отправляем отфильтрованные данные в View вместе с другими переменными.

Я расскажу о методе поиска модели User в следующем разделе.

Модель

Наша логика поиска также довольно проста. Метод поиска входит в ваш класс модели User.

Вы можете узнать больше о Model областях видимости Laravel здесь.

Вид

Как и другие части, представление, благодаря которому все это работает, также довольно простое.

У нас есть форма с 5 элементами, 1-й ввод получает поисковый запрос, 2-й выбирает столбец для сортировки, 3-й выбирает порядок сортировки, 4-й выбирает записи на странице, и последний у нас есть кнопка «Фильтр», чтобы отключить форма запроса.

Вывод

Надеюсь, вы поняли этот не такой длинный урок. Это простые решения, которые я приготовил за считанные минуты для простой потребности, которая у меня была. Надеюсь, вы будете использовать его в своих проектах. Если у вас есть улучшения для этого кода, дайте мне знать, я хотел бы изучить их.

Поскольку вы являетесь разработчиком Laravel, мне есть, что вам показать.
LaravelCollections.com — это сайт, на котором я собираю отличные ресурсы для разработчиков Laravel. Если вам интересно, загляните на него.

Первоначально опубликовано на simplestweb.in.