Laravel 5:更新记录而不更改 updated_at 字段的当前 date/time 值

Laravel 5: Update record without changing current date/time value of updated_at field

在我的 Laravel 5 项目中,当访问者 come/refresh 在产品页面上时,我想增加浏览次数:

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

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

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

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

此致, 那仁

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

public $timestamps = false;

或追加到方法主体,下面

$rds->timestamps = false;

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

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

将时间戳设置为 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();
     }