如何从Laravel SprayerResource集合返回的响应中提取username字段?
后端PHP侧获取方法
- 直接通过Sprayer模型实例获取
你已经通过findOrFail拿到了Sprayer模型实例,直接调用关联的User属性即可取值:
$sprayer = Sprayer::findOrFail($request->sprayer_id); $username = $sprayer->User->username;
- 在SprayerResource资源类中获取
如果是需要在资源类内部处理这个字段,直接在toArray方法中通过$this调用关联属性即可:
// SprayerResource.php 的 toArray 方法中 public function toArray($request) { return [ 'id' => $this->id, 'username' => $this->User->username, // 其他自定义字段 ]; }
前端接收响应后获取方法
注意你当前返回的是集合资源,即使只有单条数据,外层data也是数组格式,取值需要先取数组第一个元素:
// 假设接口返回的响应体存在变量res中 const username = res.data[0].User.username;
优化提示:你当前的接口代码存在冗余,查询单条数据不需要用
collection方法包裹,修改成如下写法后返回的data直接是对象,不需要加[0]取值:$sprayer = Sprayer::findOrFail($request->sprayer_id); // 单条数据直接返回资源实例即可,不需要用collection return new SprayerResource($sprayer);优化后前端取值代码简化为:
const username = res.data.User.username;
内容的提问来源于stack exchange,提问作者Shariffuddin Hussin
相关产品推荐
相关产品推荐

