在 Laravel 12 中,可以通过以下方法在 Model 层统一格式化时间戳:
- 在 Model 中使用
$casts
属性定义日期格式:
protected $casts = [
'created_at' => 'datetime:Y-m-d H:i:s',
'updated_at' => 'datetime:Y-m-d H:i:s',
];
- 或者重写
serializeDate
方法(适用于所有日期字段):
protected function serializeDate(\DateTimeInterface $date)
{
return $date->format('Y-m-d H:i:s');
}
- 如果需要全局设置所有模型的日期格式,可以创建一个基础 Model 类:
namespace App\Models;
use Illuminate\Database\Eloquent\Model as BaseModel;
abstract class Model extends BaseModel
{
protected function serializeDate(\DateTimeInterface $date)
{
return $date->format('Y-m-d H:i:s');
}
}
然后让你的所有模型继承这个基础 Model 类。
这些方法都可以确保从 Model 返回的时间戳数据保持一致的格式。第一种方法最灵活,可以针对不同字段设置不同格式;第二种和第三种方法则提供全局统一的格式。