有很多问题询问如何在没有更改任何内容的情况下防止updated_at
列更改。事实上,这甚至被修复为一个bug。
然而,我想做的正好相反。我希望将updated_at
列更新为当前时间戳,尽管没有更改任何内容。如果你愿意的话,我想对我的模型进行touch
。
$ touch MyLaravelModel
是否有一个简单的方法来做这样的事情在Laravel?相当于$model->touch()
的东西,而不是手动编辑字段?
我已经试过了,但是什么都没有发生。
$model = Model::find(1);
$model->save();
我这样做的原因是因为我想使用updated_at
列来跟踪模型最后一次"查看"的时间,而不必改变它。有更好的办法吗?
这与触摸父时间戳不同,因为在这种情况下,我的模型不属于父节点,也没有任何子节点
您可以使用touch()
方法。它在Model
抽象类中,至少从v4.0开始就存在了。
在这里:
/**
* Update the model's update timestamp.
*
* @return bool
*/
public function touch()
{
$this->updateTimestamps();
return $this->save();
}
像这样使用:
$model->touch();
我相信您可以执行myObject->save(),这将更新当前对象的updated_at字段,即使没有任何更改。假设它是一个用户:
$myUser = User::find(1);
$myUser->save()
我相信这仍然会更新updated_at。