我尝试在以下时间立即更新updated_at
的行并返回值:
$product = ProductModel::where("Id", $id)->update(["Status" => 0]);
return $product->updated_at;
该如何纠正?
我也可以在每次更新时全局执行此操作吗?
答案 0 :(得分:4)
update
函数用于对查询返回的任何行进行批量更新。它可以是零,可以是一,也可以是一千。这样,它的返回值只是一个布尔值“它起作用了吗?”值。
由于您要更新单行:
$product = ProductModel::where("Id", $id)->first();
$product->Status = 0;
$product->save();
return $product->updated_at;
您确实应该告诉Laravel您的自定义主键,这样您就可以使用ProductModel::find($id)
获得更清晰的代码。
旁注:如果$product
中有一个ProductModel,并且在其上使用update()
,则可以执行$product->refresh()
从数据库中重新获取其数据。
答案 1 :(得分:2)
更新操作后,将自动触摸updated_at
字段,您不必手动进行操作,如果要在其他时间触摸updated_at
时间戳,请使用{{1} }方法,如以下代码段所示:
touch()
答案 2 :(得分:1)
这行代码将返回一个布尔值。表示成功更新为true,否则为否。
$product = ProductModel::where("Id", $id)->update(["Status" => 0]);
尝试一下:
$product = ProductModel::find($id);
$product->update(["Status" => 0]);
return $product->updated_at;
答案 3 :(得分:0)
查看以下内容:
$product = ProductModel::where("Id", $id)->first();
$product->Status = 0;
$product->save();
return $product->updated_at;