You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中多选Select数组查询构建失败问题求助

解决商家多城市筛选的问题

我来帮你排查下这个城市筛选失效的问题,主要有几个关键地方需要调整:


1. 前端下拉框的value值错误

你当前的下拉框选项用了城市名称作为value,但数据库里筛选的是city_id字段——这就导致你传递的是城市名称字符串,而数据库存储的是ID(通常是数字),类型不匹配自然查不到数据。

修正后的前端代码:

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

2. 后端参数获取与判断逻辑错误

在Laravel中,表单提交的city[]这种数组格式参数,框架会自动解析为PHP数组,不需要手动用explode拆分;同时$request->city[]是语法错误的写法,直接用$request->city就能拿到数组。

另外,判断参数是否存在时,应该用$request->has('city'),更严谨的话用$request->filled('city')(它会同时检查参数存在且不是空数组),而不是$request->has('city[]')。

修正后的后端查询代码:

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

额外说明

如果你的业务场景确实需要传递城市名称而非ID(不推荐,效率更低),那你需要先根据提交的城市名称查询对应的ID数组,再执行whereIn:

if ($request->filled('city')) {
    $cityIds = City::whereIn('name', $request->city)->pluck('id');
    $businessesQuery->whereIn('city_id', $cityIds);
}

内容的提问来源于stack exchange,提问作者Sultan Kydyrkozha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 14:34:08