我在Laravel中有两个一对多的关系,其中Cities(id,name,region_id)<-Regions(id,name,country_id)<-Countrys(id,name)。
我需要创建一个资源,该资源可以返回给定国家/地区中所有地区的所有城市,例如:
"results": [
{
"region": 1,
"name": "Abruzzo",
"cities": {
{"id": 1,
"name": "Aaa"},
{"id": 2,
"name": "Aab"},
},
},
{
"region": 2,
"name": "Basilicata",
"cities": {
{"id": 1,
"name": "Baa"},
{"id": 2,
"name": "Bab"},
},
}
对于仅一种关系,我将创建一个RegionResource,一个RegionsResource并在一个(例如,ResultsResource)内部使用Resolve()方法,例如:
'regions' => (new RegionsResource($country))->resolve(),
但是对于这两个级别,我似乎都无法以递归的方式做到这一点。有人可以帮我吗?谢谢。
答案 0 :(得分:0)
感谢我的同事。这是代码:
$cities = collect();
$regions->each(function($region) use(&$cities) {
$cities->push($region->cities);
});