如何修改 Laravel API 资源集合响应以在“数据”包装器中包含另一个“数据”包装器?

问题描述

<?php

namespace App\Http\Resources;

    use Illuminate\Http\Resources\Json\ResourceCollection;
    
    class LanguageCollection extends ResourceCollection
    {
        public $collects = LanguageResource::class;
    
        /**
         * TagCollection constructor.
         * @param $resource
         */
        public function __construct($resource)
        {
            parent::__construct($resource);
        }
    
        /**
         * Transform the resource collection into an array.
         *
         * @param \Illuminate\Http\Request $request
         * @return array
         */
        public function toArray($request)
        {
            return [
                'languages' => parent::toArray($request)
            ];
        }
    }

这将给出如下响应结构:

enter image description here

但我想将所有语言放在另一个名为“result”的包装器中,因此响应结构将如下所示:

enter image description here

我不想以这种方式对其进行硬编码,因为这将要求我们更改每个资源集合。

   public function toArray($request)
    {
        return [
            'result' => ['languages' => parent::toArray($request)]
        ];
    }

实现这种响应结构的正确方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)