这里需要帮助,我试图从复选框中获取值并将它们放入编辑中以将值“Estado”更改为“Expedido”,但是当我运行代码时,它给我错误“调用成员函数 update() on null”。我还尝试查找并将 find() 的默认值更改为我想要的列,并尝试使用原始 postgresql 代码。
$chassis= $request->chassis;
$escala = $request->escala;
if(Auth::check() == true)
{
foreach($chassis as $chassis)
{
$edit = expedicoes::whereIn('Chassis', explode(',',$chassis))->first()->update(['Estado' =>'Expedido']);
}
方法
update(Array)
不存在于模型实例上,它仅作为 Builder 实例存在于查询构建器上。
删除
first()
调用来调用查询生成器上的更新
$edit = expedicoes::whereIn('Chassis', explode(',',$chassis))->update(['Estado' =>'Expedido']);
或者更新模型然后调用
save()
$edit = expedicoes::whereIn('Chassis', explode(',',$chassis))->first();
if ($edit) {
$edit->Estado = 'Expedido';
$edit->save();
}
我建议您从 foreach 循环中删除更新调用,收集所有“底盘”并运行单个查询
$extractedChassis = [];
foreach($chassis as $chassi)
{
$extractedChassis = array_merge($extractedChassis , explode(',',$chassi));
}
expedicoes::whereIn('Chassis', $extractedChassis)->update(['Estado' =>'Expedido']);
此代码返回 null
expedicoes::whereIn('Chassis', explode(',',$chassis))->first()
所以你没有机箱中的物品
explode(',',$chassis)
要解决此问题,您可以检查它是否不返回 null 然后更新它
$expedicoes = expedicoes::whereIn('Chassis', explode(',',$chassis))->first();
if(expedicoes ){
expedicoes ->update(['Estado' =>'Expedido']);
}
但我认为你的问题在列名称中,所以尝试使用 chassis 而不是 Chassis 和 estado 而不是 Estado