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 HasAttributes和app.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
我已经阅读了几个 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 HasAttributes和app.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