You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Laravel模型日期转换让created_at输出「2小时前」格式?

Laravel 实现访问 created_at 直接返回相对时间

Laravel 的 $casts 特性无法直接实现你要的「相对时间」输出,因为它的核心作用是将数据库字段转换为特定数据类型(比如 Carbon 日期实例),而相对时间属于日期的格式化输出逻辑,不属于类型转换范畴。

要实现访问 $post->created_at 直接得到类似「2 hours ago」的结果,你需要使用**访问器(Accessor)**来重写该属性的返回值:

在你的 Post 模型中添加以下代码:

/**
 * 获取格式化后的创建时间(相对时间)
 */
public function getCreatedAtAttribute($value)
{
    return \Carbon\Carbon::parse($value)->diffForHumans();
}

添加后,当你执行 $timepassed = $post->created_at; 时,就能直接得到相对时间字符串。

如果之后还需要使用原始的 Carbon 日期实例进行其他操作,可以自定义一个新属性(比如 created_at_raw)并通过 $casts 转换:

protected $casts = [
    'created_at_raw' => 'datetime',
];

此时访问 $post->created_at_raw 就能拿到 Carbon 实例,而 $post->created_at 则返回相对时间。


内容的提问来源于stack exchange,提问作者Surya Neupane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:33:11