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

Laravel中根据多选框值执行数据库查询的问题

问题分析与解决方案

原代码存在的问题

  • 循环遍历$notifyTo数组时,每次都会覆盖$user变量,最终只能得到最后一个company_id对应的用户数据,无法获取所有选中公司的用户。
  • 使用User::all()->where(...)是先查询所有用户到内存中再过滤,数据量大时性能极差,应直接在数据库层面完成筛选。

正确实现代码

$data = $request->all();
$notifyTo = $data['notify_to']; // 多选框提交的company_id数组

// 数据库层面直接筛选:company_id在目标数组中且status=1的用户
$users = User::whereIn('company_id', $notifyTo)
             ->where('status', 1)
             ->get();

print_r($users);
exit;

代码说明

  • whereIn('company_id', $notifyTo):直接在数据库中匹配company_id属于$notifyTo数组的记录,避免循环多次查询数据库。
  • where('status', 1):附加状态为1的筛选条件。
  • get():执行查询并返回符合条件的用户集合。

这种方式既能一次性获取所有符合要求的用户数据,还能大幅提升查询效率,避免不必要的内存消耗和重复数据库请求。

内容的提问来源于stack exchange,提问作者Ajith Vinayak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:01:08