传递给Illuminate \\ Database \\ Query \\ Builder :: cleanBindings()的参数1必须为数组类型,给定字符串

时间:2019-11-30 09:37:19

标签: laravel laravel-5 eloquent

我更新2个数据,第一个数据在普通表中,第二个数据使用EAV,因此我必须在哪里使用具有输入ID的数据进行更新

我在做什么错..im收到此错误..

这是我的控制器

这是普通桌子

$vendor = Vendor::find($request->id);
$vendor->is_active = '0';
$vendor->name = $request->name;
$vendor->address = $request->address;
$vendor->save();

这是EAV表

$values = [
    'detail'  => $request->detail,
    'join_at' => Carbon::now(),
];
VendorDetail::whereIn('vendor_id', $request->id)->update($values);

2 个答案:

答案 0 :(得分:0)

在第二个参数中使用whereIn()时,您必须传递数组

VendorDetail::whereIn('vendor_id', [$request->id])->update($values);

但是您可以使用

VendorDetail::where('vendor_id',$request->id)->update($values);

答案 1 :(得分:0)

我在使用 Eloquent 时在选择查询中遇到了同样的错误。所以也发布我的解决方案。正如其他答案中已经提到的,

<块引用>

当在第二个参数中使用 whereIn() 时,你必须数组

我的错误是我使用“=”作为第二个参数,使用实际数组作为第三个参数。删除如下等号参数解决了我的问题。

$innerQuery->whereIn('wo.wm_is_completed', $completedFlagArr);