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

Laravel中使用old()值做whereIn查询仅返回第一条结果问题求解

问题根因

你的代码中多对old('user_id')做了一层数组包裹,导致传入whereIn的参数结构错误:

  • old('user_id')本身就是多选表单提交返回的一维数组,结构为[1,2,3]
  • 你用[old('user_id')]包裹后,参数变成了二维数组[[1,2,3]],whereIn处理这种结构时只会读取第一个层级的首个元素做匹配,因此仅返回第一条对应结果。

解决方法

直接去掉外层的数组包裹即可,同时可以加默认空数组避免旧值为空时报错:

// 修正后代码
$old_users_id = old('user_id', []);
$old_value_users = User::whereIn('id', $old_users_id)->get();

优化建议

可以增加非空判断,避免空数组传入whereIn产生无意义的SQL查询:

$old_value_users = collect();
if (!empty(old('user_id'))) {
    $old_users_id = old('user_id');
    $old_value_users = User::whereIn('id', $old_users_id)->get();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:57:04