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



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

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());
}

在此处输入图像描述

必须在字段前面指示表的名称。

型号 地点代码:

protected $columns = ['places.id', 'places.title']; //all column for select
public function scopeExclude($query, $value = [])
{
return $query->select(array_diff($this->columns, (array) $value));
}

型号城市代码:

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

控制器代码:

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

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

感谢这里的每个人帮助我,但上述解决方案都不起作用。在尝试了不同的功能并为此花费了数小时后,我想通了。

型号 地点代码:

公共函数 place(({

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

控制器代码:

城市公共功能($id( { $city=城市::查找或失败($id(;

返回 new CityResource( $city->place((->get((->map(function ($item,$key( {

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

相关内容

  • 没有找到相关文章

最新更新