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

如何通过现有控制器代码返回指定的JSON响应格式?

如何修改Laravel控制器代码返回指定JSON格式?

需求与现状

目标要返回的JSON格式:

{"data":[],"meta":{"paging":{"links":[],"total":0},"time":0.079}}

当前使用的控制器代码:

public function someMethod()
{
    $var=SomeModel::with(['status' => function ($query) {
        $query->where('name', 'like', '%Pending Payment%');
    }])->get();

    return [
        'data' => $var,
    ];
}

目前实际得到的响应:

{"data":[]}

修改方案

直接在返回数组中补充meta结构,同时计算执行耗时、统计结果总数:

public function someMethod()
{
    // 记录请求开始时间
    $startTime = microtime(true);
    
    $var = SomeModel::with(['status' => function ($query) {
        $query->where('name', 'like', '%Pending Payment%');
    }])->get();

    // 计算接口执行耗时,保留三位小数
    $executionTime = round(microtime(true) - $startTime, 3);

    return [
        'data' => $var,
        'meta' => [
            'paging' => [
                'links' => [],
                'total' => $var->count() // 获取当前查询结果的总数
            ],
            'time' => $executionTime
        ]
    ];
}

补充说明

  • 如果后续需要实现分页功能(比如用paginate()替代get()),total值可以替换为$var->total(),links数组也可以根据分页实例生成对应的分页链接;
  • round()函数用于将耗时保留三位小数,和目标格式的0.079格式对齐;
  • 若不需要精确耗时,也可以直接固定写死0.079,但建议用动态计算的方式更贴合实际场景。

内容的提问来源于stack exchange,提问作者Kevin Otieno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:20:43