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

Laravel中如何查询多关联模型并仅返回指定字段数据

Laravel关联查询指定字段并返回目标JSON结构

解决方案

修改查询代码,明确指定主表和关联表需要的字段,同时确保关联所需的外键/主键被包含,调整后的代码如下:

$data = Ticket::select('id', 'user_id', 'package_id', 'clinic_id', 'doctor_id', 'appointment_date', 'amount')
    ->with([
        'user' => fn($query) => $query->select('id', 'name'),
        'package' => fn($query) => $query->select('id', 'name'),
        'clinic' => fn($query) => $query->select('id', 'name', 'address'),
        'doctor' => fn($query) => $query->select('id', 'name')
    ])
    ->get();

return response()->json([
    'status' => 200,
    'body' => [
        'limit' => $request->limit,
        'offset' => $request->offset,
        'data' => $data
    ]
], 200);

关键说明

  1. 主表字段选择:必须包含id以及所有关联模型对应的外键(user_id、package_id等),否则Laravel无法建立主表与关联数据的关联关系,同时按需选择业务字段appointment_date、amount。
  2. 关联表字段选择:每个关联查询通过闭包指定要获取的字段,必须包含关联模型的主键(id),否则关联数据无法正确映射到主表记录。
  3. 响应结构调整:移除了原代码中响应最外层的多余数组包裹,确保返回结构符合常规接口规范,同时匹配你期望的data数组格式。

如果你的关联关系使用了非默认的外键名称,只需将主表select中的外键字段替换为实际名称即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:40:44