Laravel,无法为多个 <select> 中的数组构建查询

Laravel, can't build query for array in multiple <select>

我做了一个过滤器来寻找商家

几个城市可供选择

城市存储在 city_id

过滤器看起来像这样

<select id="city" multiple name="city[]">
  @foreach($cities as $city)
    <option value="{{ $city->name }}">{{ $city->name }}</option>
  @endforeach
</select>

全部要求

dd($request->all()) 

给我看这个

我为特许经营或业务建立查询 像这样

if ($request->has('fb')) {
  $businessesQuery->where('fb', $request->fb);
}

我尝试像这样构建查询,但它不起作用

if ($request->has('city[]')) {
    $typeArray = explode(",", $request->city[]);
    $businessesQuery->whereIn('city_id', $typeArray);
}

帮我解决这个问题,不胜感激!

您的 html 必须使用 city_id 作为值,而不是城市名称。因为您尝试使用 id 而不是 name.

进行搜索
    <option value="{{ $city->id }}">{{ $city->name }}</option>

explode 函数接受一个 string 作为输入,returns 一个数组。在您的情况下,您的 city[] 请求值已经是一个从 dump 可见的数组。你应该直接使用它。像这样。

if ($request->has('city')) {
    $businessesQuery->whereIn('city_id', $request->input('city');
}