Laravel资源中的嵌套集合解析

时间:2018-11-28 13:38:43

标签: php laravel api collections resources

我在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(),

但是对于这两个级别,我似乎都无法以递归的方式做到这一点。有人可以帮我吗?谢谢。

1 个答案:

答案 0 :(得分:0)

感谢我的同事。这是代码:

    $cities = collect();

    $regions->each(function($region) use(&$cities) {
        $cities->push($region->cities);
    });