Laravel如何通过JSON响应返回外键关联属性用于DataTable展示
解决步骤
1. 修正关联查询代码
你当前的JOIN关联条件存在错误,agency_exps表关联agencies表应该用外键agency_id而非自身主键id,同时给关联查询出来的机构名字段设置别名agency_name,修改后代码如下:
$expense = DB::table('agency_exps') ->join('agencies','agency_exps.agency_id','=','agencies.id') ->select('agency_exps.*','agencies.name as agency_name') ->get();
2. 更新前端DataTable列配置
把原来的agency_id字段替换为新返回的agency_name字段即可:
{"data":"id"}, {"data":"agency_name"}, {"data":"amount"}, {"data":"date"}, {"data":"description"},
可选优化方案(Eloquent关联写法)
如果你使用Eloquent模型开发,可通过定义关联简化代码,无需手动写JOIN语句:
- 首先在
AgencyExp模型中定义关联方法
// app/Models/AgencyExp.php public function agency() { return $this->belongsTo(Agency::class); }
- 控制器中使用预加载查询数据
$expense = AgencyExp::with('agency')->get();
- 前端列配置直接读取关联字段
{"data": "agency.name"}
内容的提问来源于stack exchange,提问作者Enigma
相关产品推荐
相关产品推荐

