Laravel 5:更新记录而不更改updated_at字段的当前日期/时间值

时间:2016-08-27 13:19:57

标签: laravel-5 auto-update

在我的Laravel 5项目中,我希望在访问者在产品页面上进行刷新时增加观看次数,例如:

$rds = Product::whereId($id)->first();
$rds->hits++;
$rds->save();

问题是字段: updated_at 会自动更新,这根本不是我想要的,因为我只想更改字段:hits,而不是update_at字段。

如果我设置$ rds-> updated_at = false;该字段更新为'0000-00-00 00:00:0'。

您能否建议如何防止updated_at字段仅针对某些功能自动更改?

最诚挚的问候, 那仁

3 个答案:

答案 0 :(得分:2)

将时间戳设置为false以禁用更新created_at和updated_at。

$rds = Product::whereId($id)->first();
$rds->hits++;
$rds->timestamps = false;
$rds->save();

您可以在performUpdate方法中查看Laravel的代码: \Illuminate\Database\Eloquent\Model.php

     // First we need to create a fresh query instance and touch the creation and
     // update timestamp on the model which are maintained by us for developer
     // convenience. Then we will just continue saving the model instances.
     if ($this->timestamps && Arr::get($options, 'timestamps', true)) {
         $this->updateTimestamps();
     }

答案 1 :(得分:1)

它不是$rds->updated_at = false,应该是$rds->timestamps = false

答案 2 :(得分:0)

只需将以下内容放入模型中即可禁用时间戳

public $ timestamps = false;

或附加到方法正文,

$ rds-> timestamps = false;

注意:第一个会永久禁用时间戳,而另一个则不允许更新编辑时间戳。