如何更新行并返回updated_at?

时间:2018-12-17 22:38:48

标签: laravel laravel-5

我尝试在以下时间立即更新updated_at的行并返回值:

$product = ProductModel::where("Id", $id)->update(["Status" => 0]);

return $product->updated_at;

该如何纠正?

我也可以在每次更新时全局执行此操作吗?

4 个答案:

答案 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;