Laravel 资源中的嵌套集合解析

Posted

技术标签:

【中文标题】Laravel 资源中的嵌套集合解析【英文标题】:Nested collection resolve in Laravel Resource 【发布时间】:2019-04-30 10:31:44 【问题描述】:

我在 Laravel 中有两个一对多的关系,其中 Cities(id, name, region_id)

我需要创建一个可以返回给定国家/地区所有区域中所有城市的资源,例如:

"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】:

感谢我的同事解决了。代码如下:

    $cities = collect();

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

【讨论】:

以上是关于Laravel 资源中的嵌套集合解析的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 7 - 嵌套资源路由中的范围问题

Laravel - 遍历嵌套集合

如何在 Laravel 中创建嵌套集合?

Laravel 4:如何为嵌套资源编写正确的嵌套控制器?

验证数组中的 Laravel 嵌套规则

Laravel 查询生成器。返回嵌套结构化数据