Laravel eloquent 将日期时间戳 GLOBAL 更改为 d-m-Y H:i:s

Laravel eloquent change date timestamps GLOBAL to d-m-Y H:i:s

我已经阅读了几个 post 来更改时间戳日期格式,但我找不到如何为所有模型 GLOBAL 更改此格式。

我想显示 created_at 和 update_at 这样的格式 d-m-Y H:i:s

这可能吗?我该如何实现?

有2个解法

1 解决方案) 使用特征

<?php

namespace App\Models\Traits;

trait DatesAttributes
{
    protected $casts = [
        'created_at' => 'datetime:d-m-Y H:i:s',
        'updated_at' => 'datetime:d-m-Y H:i:s', 
    ];
}

制作特征,只使用需要转换日期的模型。

2 解决方案) 使用父模型

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class CastModel extends Model
{
    protected $casts = [
        'created_at' => 'datetime:d-m-Y H:i:s',
        'updated_at' => 'datetime:d-m-Y H:i:s', 
    ];
}

所有需要转换日期的模型都必须扩展 CastModel。

3解)这时候可以覆盖trait HasAttributesapp.php 配置文件

protected function getDateFormat()
{
    return $this->dateFormat ?: env('date_format', 'Y-m-d H:i:s');
}

app.php配置中添加

'date_format' => 'd-m-Y H:i:s'

最后使用

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class CastModel extends Model
{
    use App\Models\Traits\HasAttributes;
}

必须扩展所有模型CastModel