@mrSeller

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

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

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

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