Laravel 时间字段

有时候我们在一个已有的数据库上使用 Laravel 进行开发,通常表的创建和更新时间的字段名并不是 created_atupdated_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_atupdated_at,直接使用以下代码即可

1
protected $dateFormat = 'U';

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2023 Keep It Simple And Stupid All Rights Reserved.

访客数 : | 访问量 :