Laravel 如何禁止修改某一数据会更新 update_at

情景是博客,当修改title和content的时候我需要更新update_at,但是当浏览量views有人浏览时就加1,也会改变了update_at,如何能限定某一字段就不更新时间呢?

阅读 9.6k
5 个回答

最后我采用不自动触发 updated_at

public function getUpdatedAtColumn() {
        return null;
    }

然后在修改title和content的时候,手动修改updated_at为当前时间

$params['updated_at'] = date('Y-m-d h:i:s',time());

你可以在修改title和content的时候正常操作,views加1是,给这个模型的对象设置timestamps=false。
比如

$user = new User();
$user->timestamps=false;
$user->name='test';
$user->save();

去瞄了下源码,想通过设置就实现效果是不可行的。

可以尝试在修改 views 值时,同时设置 updated_at 值试试。

Laravel的model里面有一个成员默认值为true

protected $timestramp = true;

它起的作用是当某一条记录跟新时会自动更新updated_at(注意不是update_at)。如果不想自动跟新就设为false
下面说说你的问题
你的字段名为update_at所以应该和laravel的自动跟新没关系,应该是你的数据库中在update_at字段上设置了“On update Current_Timestamp”。按照你的需求应该是不需要自动跟新,因此按需手动跟新就好

在model里加入:public $timestamps = false;
class Common_address extends Model
{

protected $table = 'common_address';
protected $fillable = [];
// 不自动更新 created_at 和 updated_at
public $timestamps = false;

}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏