@mrSeller

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

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

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

И как вообще прописывать запрос в таком случае, если у меня users и drivecats используют отношение многие ко многим?
  • Вопрос задан
  • 64 просмотра
Решения вопроса 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);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы