@mrSeller

Как правильно передать контроллеру параметр с множественным значением?

Есть страница, которая выводит пользователей, тут же есть несколько фильтров.
Один из фильтров вызывает у меня сложность - фильтр категорий вождения.
Есть А, В, С, D и т.д.

Как передавать категорию для выборки пользователей?
Думаю, это должен быть массив, поэтому поискал как в гет передать массив и работаю с адресом типа
?drivecat[]=a&drivecat[]=b
Но насколько это правильно? Может есть другие, более правильные, способы?

И как вообще прописывать запрос в таком случае, если у меня users и drivecats используют отношение многие ко многим?
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
@mrSeller
Используя гет-запрос с ?drivecat[]=3&drivecat[]=4, методом проб и ошибок получился вот такой код:
// проверка на наличие в запросе массива drivecats
if ( count($request->drivecats) ) {
  // выбираем id пользователей (для этого создал отдельную модель для связывающей таблицы)
  $users_id = DrivecatUser::whereIn('drivecat_id', $request->drivecats)->pluck('user_id');
  // выбираем пользователей
  $users = User::whereIn('id', $users_id)->get();
} else {
  $users = User::has('drivecats')->get();
}


UPD: не нравится мне get-запрос вида ?drivecat[]=3&drivecat[]=4, да и в js работать неудобно, поэтому сменил на ?drivecats=3,4 и в контроллере прописал разбиение строки на массив:
$drivecats = explode(',', $request->drivecats);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
VAMDODOMA.RU Кострома
от 70 000 до 100 000 руб.
от 60 000 до 90 000 руб.
21 июля 2018, в 01:45
800 руб./в час
20 июля 2018, в 23:46
800 руб./за проект