有时候我们在一个已有的数据库上使用 Laravel 进行开发,通常表的创建和更新时间的字段名并不是 created_at
和 updated_at
,也有时候只有一个创建时间而没有更新时间,那么我们在数据模型定义的时候该怎么处理呢?
时间字段名称修改成自己需要的
第一种: 重写常量(推荐)
1 2 3 4 5 6 7
| <?php
class Test extends Model { const CREATED_AT = 'create_time'; const UPDATED_AT = 'update_time'; }
|
第二种: 模型事件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <?php
class Test extends Model { public $timestamps = false; public static function boot() { parent::boot(); static::creating(function ($model) { $model->created = $model->freshTimestampString(); }); static::updating(function ($model) { $model->updated = $model->freshTimestampString(); }); } }
|
时间字段的类型是int
而不是timestamps
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <?php
class Test extends Model { const CREATED_AT = 'create_time'; const UPDATED_AT = 'update_time'; public function setCreateTimeAttribute($value) { $this->attributes['create_time'] = strtotime($value); } public function setUpdateTimeAttribute($value) { $this->attributes['update_time'] = strtotime($value); } public function getCreateTimeAttribute() { return date('Y-m-d H:i:s', $this->attributes['create_time']); } public function getUpdateTimeAttribute() { return date('Y-m-d H:i:s', $this->attributes['update_time']); } }
|
如果使用的是Laravel默认的created_at
和updated_at
,直接使用以下代码即可
1
| protected $dateFormat = 'U';
|