繁体   English   中英

从具有归属关系的 laravel api 获取额外字段

[英]Getting extra fields from laravel api having belongstomany relationship

我有两个通过belongstomany 关系相互关联的数据表。 当我从它的 api 控制器中获取数据时,只选择了两个列键['id','title']但它在响应 object 中返回了一些额外的数据。

model代码:

public function place(){

    return $this->belongsToMany(Place::class,'city_place')->select(array('id', 'title'));

}

controller代码:

public function ofcity($id)
{
    $city=City::findOrFail($id);
    return new CityResource(  $city->place()->get());

}

在此处输入图像描述

您必须在字段前指明表的名称。

model 地方代码:

protected $columns = ['places.id', 'places.title']; //all column for select

public function scopeExclude($query, $value = [])
{
    return $query->select(\array_diff($this->columns, (array) $value));
}

model 城市代码:

public function place()
{        
     return $this->belongsToMany(Place::class,'city_place', 'city_id', 'place_id');        
}

controller 代码:

public function ofcity($id)
{
    $cities = City::findOrFail($id)->place()->exclude(['featured_image'])->get()->toArray();
    return response()->json(['cities' => $cities], 200);    
}

在排除中跳过所有不需要显示的字段。

感谢这里的每个人帮助我,但上述解决方案都没有奏效。我在尝试不同的功能并花费数小时后才弄清楚。

model 地方代码:

公共 function 地方(){

    return $this->belongsToMany(Place::class,'city_place','city_id','place_id')->select(array('places.id', 'places.title'));

}

controller 代码:

公共 function ofcity($id) { $city=City::findOrFail($id);

return new CityResource($city->place()->get()->map(function ($item,$key) {

 return ['id' => $item['id'],'title'=>$item['title']];
    })

    );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM