Привет всем, это Ади.
Я хотел поделиться с вами своим простым решением для поиска, фильтрации и сортировки данных в 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.