触摸模型的时间戳而不实际更新模型

时间:2015-08-22 23:32:08

标签: php laravel laravel-4

有很多问题询问如何在没有任何更改时阻止updated_at列更改。事实上,this was even fixed as a bug.

但是,我想做的恰恰相反。我希望将updated_at列更新为当前时间戳,尽管没有任何更改。基本上,如果你愿意,我想touch我的模型。

$ touch MyLaravelModel

在Laravel中有一种简单的方法可以做这样的事情吗?与手动编辑字段相比,相当于$model->touch()的东西?

我已经尝试过这样的事情,但绝对没有任何反应。

$model = Model::find(1);
$model->save();

我这样做的原因是因为我想使用updated_at列来基本跟踪模型上次“查看”的时间,而不必更改它。有没有更好的方法来解决这个问题?

这与Touching Parent Timestamp不同,因为在这种情况下,我的模型不属于父模型,也没有任何子模式。

2 个答案:

答案 0 :(得分:1)

您可以使用touch()方法。它位于Model抽象类中,至少从v4.0开始。

这是:

/**
 * Update the model's update timestamp.
 *
 * @return bool
 */
public function touch()
{
    $this->updateTimestamps();
    return $this->save();
}

像这样使用:

$model->touch();

答案 1 :(得分:0)

我相信你可以做myObject-> save(),即使没有改变,也会更新当前对象的updated_at字段。所以我们说这是一个用户:

$myUser = User::find(1);
$myUser->save()

我相信仍会更新updated_at时间。