![](/img/trans.png)
[英]Laravel getting results from model belongsToMany relationship back to controller
[英]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.