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
相关产品推荐
相关产品推荐

