首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel中使用Fractal Transformers返回数组而非集合

如何在Laravel中使用Fractal Transformers返回数组而非集合
EN

Stack Overflow用户
提问于 2020-06-24 16:59:05
回答 1查看 761关注 0票数 0

我在一个基于Laravel的REST API项目中使用了Fractal Transformers。我有一个$defaultInclude,因此在Transformer类(ReleaseTransformer)中有一个函数来处理includes。具体如下:

代码语言:javascript
复制
public function includeDetails($item)
{
    $details = $item->details;

     return $details
        ? $this->collection($details, new DetailsTransformer())
        : $this->null();
}

DetailsTranformer类中,我有

代码语言:javascript
复制
public function transform($item)
{
    return [$item->detail];
}

我在这里获得了正确的数据,但响应如下:

代码语言:javascript
复制
"details": {
     "data": [
          [
              "DETAIL-ID-1"
          ],
          [
              "DETAIL-ID-2"
          ],
          [
              "DETAIL-ID-3"
          ],
      ]
  }

我希望获得如下数组形式的响应:

代码语言:javascript
复制
"details":["DETAIL-ID-1", "DETAIL-ID-2", "DETAIL-ID-3"]

我正在使用扩展spatie/laravel-fractal,响应是通过使用以下命令获得的:

代码语言:javascript
复制
fractal($release, new ReleaseTransformer())->toArray();

我如何修改代码,因为它将返回这个数组?

EN

回答 1

Stack Overflow用户

发布于 2020-07-09 23:28:43

我找到了解决此问题的方法。我们可以使用Laravel集合的flatten()方法,它将使返回的数组成为一维。因此代码如下所示:

代码语言:javascript
复制
$data = fractal($release, new ReleaseTransformer())->toArray();

$dataAsArray = collecet($data)->flatten()->all();

PS:我不确定在我提到的场景中使用transformers是不是正确,但如果有人需要的话,只需要输入答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62551328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档