時(shí)間戳
版本 | 調(diào)整功能 |
---|---|
5.0.10 |
增加autoWriteTimestamp 方法動(dòng)態(tài)設(shè)置時(shí)間字段寫入 |
5.0.6 | 增加時(shí)間字段自動(dòng)格式輸出設(shè)置 |
5.0.5 | 時(shí)間戳字段支持自動(dòng)格式化輸出 |
autoWriteTimestamp 屬性支持設(shè)置為時(shí)間日期類名 |
系統(tǒng)支持自動(dòng)寫入創(chuàng)建和更新的時(shí)間戳字段,有兩種方式配置支持。
第一種方式,是在數(shù)據(jù)庫配置文件中添加全局設(shè)置:
// 開啟自動(dòng)寫入時(shí)間戳字段
'auto_timestamp' => true,
第二種是直接在單獨(dú)的模型類里面設(shè)置:
protected $autoWriteTimestamp = true;
如果這兩個(gè)地方設(shè)置為true,默認(rèn)識(shí)別為整型int
類型,如果你的時(shí)間字段不是int
類型的話,例如使用datetime
類型的話,可以這樣設(shè)置:
// 開啟自動(dòng)寫入時(shí)間戳字段
'auto_timestamp' => 'datetime',
或者
protected $autoWriteTimestamp = 'datetime';
字段名默認(rèn)創(chuàng)建時(shí)間字段為create_time
,更新時(shí)間字段為update_time
,支持的字段類型包括timestamp/datetime/int
。
寫入數(shù)據(jù)的時(shí)候,系統(tǒng)會(huì)自動(dòng)寫入create_time
和update_time
字段,而不需要定義修改器,例如:
$user = new User();
$user->name = 'THINKPHP';
$user->save();
echo $user->create_time; // 輸出類似 2016-10-12 14:20:10
echo $user->update_time; // 輸出類似 2016-10-12 14:20:10
V5.0.5+
版本開始,時(shí)間字段輸出的時(shí)候會(huì)自動(dòng)進(jìn)行格式轉(zhuǎn)換,如果不希望自動(dòng)格式化輸出,可以把數(shù)據(jù)庫配置文件的datetime_format
參數(shù)值改為false
(V5.0.6+
版本支持,之前版本可以使用類型轉(zhuǎn)換方式關(guān)閉自動(dòng)格式化)
如果你的數(shù)據(jù)表字段不是默認(rèn)值的話,可以按照下面的方式定義:
class User extends Model
{
// 定義時(shí)間戳字段名
protected $createTime = 'create_at';
protected $updateTime = 'update_at';
}
下面是修改字段后的輸出代碼:
$user = new User();
$user->name = 'THINKPHP';
$user->save();
echo $user->create_at; // 輸出類似 2016-10-12 14:20:10
echo $user->update_at; // 輸出類似 2016-10-12 14:20:10
如果你只需要使用create_time
字段而不需要自動(dòng)寫入update_time
,則可以單獨(dú)設(shè)置關(guān)閉某個(gè)字段,例如:
class User extends Model
{
// 關(guān)閉自動(dòng)寫入update_time字段
protected $updateTime = false;
}
如果不需要任何自動(dòng)寫入的時(shí)間戳字段的話,可以關(guān)閉時(shí)間戳自動(dòng)寫入功能,設(shè)置如下:
class User extends Model
{
// 關(guān)閉自動(dòng)寫入時(shí)間戳
protected $autoWriteTimestamp = false;
}
如果是關(guān)閉全局的自動(dòng)時(shí)間寫入,則可以使用:
// 關(guān)閉全局自動(dòng)寫入時(shí)間字段
'auto_timestamp' => false,