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

Laravel控制器用Carbon计算用户创建天数返回JSON接口报错如何解决

问题原因及修复方案

核心错误点

  • User::all() 执行后返回的是Eloquent集合对象,包含所有匹配的用户模型,集合本身没有created_at属性,直接调用$users->created_at会抛出属性不存在的错误,这是接口报错的根本原因。
  • 原逻辑只计算了一个全局日期差值,不符合「每条数据单独标注入库距今天数」的需求。

修复代码

你可以通过集合的map方法遍历每一条用户数据,给每个用户对象追加自定义的日期间隔字段:

use Carbon\Carbon;

public function index()
{
    $now = Carbon::now();
    $users = User::all('first_name', 'last_name', 'profile_img', 'created_at')
        ->map(function ($user) use ($now) {
            // 追加数字类型的距今天数字段
            $user->days_from_created = $user->created_at->diffInDays($now);
            // 追加"X天前"格式的人性化展示字段,不需要可以删除
            $user->created_text = $user->created_at->diffForHumans($now);
            return $user;
        });
    
    return response()->json(['data' => $users]);
}

补充说明

Laravel默认会把created_at、updated_at等时间字段自动转为Carbon实例,不需要额外做类型转换就可以直接调用Carbon的相关计算方法。

内容的提问来源于stack exchange,提问作者Md Atiqur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:36:01