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

Laravel 5.2中whereIn传JSON值报parameterize类型错误的解决问询

解决Laravel 5.2中whereIn使用JSON字符串报错的问题

嘿,这个问题其实很好搞定!咱们先理清楚错误根源:

你现在的代码里用json_encode把$request->chk_load转成了JSON字符串,但whereIn方法的第二个参数必须是数组类型,所以系统才会抛出parameterize() must be of the type array, string given的错误——你给了字符串,它要的是数组,自然就报错啦。

修复方案分两种场景:


场景1:前端传的是常规多选表单(比如多选框name设为chk_load[])

这种情况下$request->chk_load本身就是一个数组,完全不需要用json_encode处理,直接拿来用就行:

$load_id = $request->chk_load;
Load::whereIn('id', $load_id)->update(['status' => 3]);

场景2:前端确实传的是JSON格式字符串

如果因为前端的特殊处理,$request->chk_load是一个JSON格式的字符串(比如"[1,2]"),那你需要做的是解码而非编码,用json_decode把它转成数组:

// 第二个参数传true,确保转成索引数组
$load_id = json_decode($request->chk_load, true);
Load::whereIn('id', $load_id)->update(['status' => 3]);

小提示:

json_encode是把数组转成JSON字符串的操作,而你这里需要的是数组,所以之前的操作完全搞反了~如果是常规的多选场景,直接用请求里的数组就好,不用额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:39:53