我想在表格的某些列中保留更改的时间记录。如何在db中获取和保存时间戳值?我试图按照以下方式进行,但在col_edited_at列中总是发送电子邮件00:00:00。
$case->col_edited_at = time();
$case->save();
答案 0 :(得分:6)
其他答案是正确的,但我知道更优雅的解决方案。因此,您不必再考虑设置时间戳了。将其添加到您的模型中,如果您更改列,则会刷新col_edited_at
字段:
public static function boot(){
parent::boot();
static::saving(function($model){
if($model->isDirty('col')){
$model->col_edited_at = Carbon::now();
}
});
}
因此,当模型被保存并且col
变脏(意味着它已经改变)时,时间戳将被设置为当前时间。
用法:
$model = MyModel::find(1);
$model->col = 'foo';
$model->save();
答案 1 :(得分:2)
默认情况下,MySQL时间戳字段需要格式0000-00-00 00:00:00
。如果你只是想存储一个unix风格"秒以来的时代"像time()
返回的时间戳使用整数字段,否则使用:
$case->col_edited_at = date('Y-m-d H:i:s');
$case->save();
答案 2 :(得分:1)
只需使用
date('Y-m-d H:i:s')
代替time()