在我的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字段仅针对某些功能自动更改?
最诚挚的问候, 那仁
答案 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;
注意:第一个会永久禁用时间戳,而另一个则不允许更新编辑时间戳。