鍍金池/ 問答/PHP  HTML/ Laravel 如何禁止修改某一數(shù)據(jù)會更新 update_at

Laravel 如何禁止修改某一數(shù)據(jù)會更新 update_at

情景是博客,當(dāng)修改title和content的時候我需要更新update_at,但是當(dāng)瀏覽量views有人瀏覽時就加1,也會改變了update_at,如何能限定某一字段就不更新時間呢?

回答
編輯回答
毀了心

Laravel的model里面有一個成員默認值為true

protected $timestramp = true;

它起的作用是當(dāng)某一條記錄跟新時會自動更新updated_at(注意不是update_at)。如果不想自動跟新就設(shè)為false
下面說說你的問題
你的字段名為update_at所以應(yīng)該和laravel的自動跟新沒關(guān)系,應(yīng)該是你的數(shù)據(jù)庫中在update_at字段上設(shè)置了“On update Current_Timestamp”。按照你的需求應(yīng)該是不需要自動跟新,因此按需手動跟新就好

2018年1月16日 08:05
編輯回答
卟乖

你可以在修改title和content的時候正常操作,views加1是,給這個模型的對象設(shè)置timestamps=false。
比如

$user = new User();
$user->timestamps=false;
$user->name='test';
$user->save();
2017年6月20日 23:17
編輯回答
毀了心

去瞄了下源碼,想通過設(shè)置就實現(xiàn)效果是不可行的。

可以嘗試在修改 views 值時,同時設(shè)置 updated_at 值試試。

2017年6月28日 11:13
編輯回答
傲寒

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

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

}

2018年2月8日 19:52
編輯回答
不二心

最后我采用不自動觸發(fā) updated_at

public function getUpdatedAtColumn() {
        return null;
    }

然后在修改title和content的時候,手動修改updated_at為當(dāng)前時間

$params['updated_at'] = date('Y-m-d h:i:s',time());
2017年12月23日 02:26