laravel 在添加操做自動完成對時間保存修改

相信對於 Laravel 提供了自動的 timestamps 莞式服務 讓你們必定很舒服吧!php

只要你們在數據庫表中建立了 craeted_at 和 updated_at 字段以後, Laravel 已經準備好了給你提供各類服務了 ^^。好比說,模型繼承了 Eloquent 以後,便會在 $model->save() $model->update() $model->push() $model->touch() 的時候更新時間戳字段。對,全自動哦,徹底你不用動,不用去刻意安排,一切都給你搞定了,真的很爽哦。數據庫

固然,禁止它們這種體貼的行爲很簡單,只要在繼承的模型裏面這樣寫就能夠了spa

class User extends Eloquent { public $timestamps = false; }

嗯,設置 $timestamps = false 既可。scala

但是,這麼好用的,堪稱完美的服務爲何不用呢?爲何呢?我也很納悶。unix

呃,難道由於它是標準的日期時間類型嗎?而你喜歡在項目裏面用上分分鐘都沒法計算出來哪一天的unix時間戳?code

好吧,你說這是由於老項目數據庫的緣由,原諒你一回。下面就告訴你怎麼搞定它,讓它如你所願,好讓你爽到爆!orm

class BaseModel extends Eloquent { /**  * 默認使用時間戳戳功能  *  * @var bool  */ public $timestamps = true; /**  * 獲取當前時間  *  * @return int  */ public function freshTimestamp() { return time(); } /**  * 避免轉換時間戳爲時間字符串  *  * @param DateTime|int $value  * @return DateTime|int  */ public function fromDateTime($value) { return $value; } /**  * select的時候避免轉換時間爲Carbon  *  * @param mixed $value  * @return mixed  */ // protected function asDateTime($value) { // return $value; // } /**  * 從數據庫獲取的爲獲取時間戳格式  *  * @return string  */ public function getDateFormat() { return 'U'; } }

你能夠會注意到了我這裏註釋掉了 asDateTime 這個方法。在這裏,我想在模型對象讀取這兩個字段的時候輸出的是標準的日期時間字符串,這樣的話我就能夠省點力去轉換了。htm

若是你想只獲取日期的話,能夠用這樣的姿式得到結果:對象

$model->created_at->format('Y-m-d')

還有,注意啊,你的數據庫字段必定別再是 datetime 了,換成 int 型吧。繼承

靜靜享受 Laravel 自動維護 timestamps 帶給你的快感吧!

相關文章
相關標籤/搜索