0

我在基于 Laravel 的 REST API 项目之一中使用分形变压器。我有一个$defaultInclude,因此在 Transformer 类(ReleaseTransformer)中有一个函数来处理包含。如下:

public function includeDetails($item)
{
    $details = $item->details;

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

DetailsTranformer课堂上我有

public function transform($item)
{
    return [$item->detail];
}

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

"details": {
     "data": [
          [
              "DETAIL-ID-1"
          ],
          [
              "DETAIL-ID-2"
          ],
          [
              "DETAIL-ID-3"
          ],
      ]
  }

我想将响应作为数组获取,如下所示:

"details":["DETAIL-ID-1", "DETAIL-ID-2", "DETAIL-ID-3"]

我正在使用扩展程序spatie/laravel-fractal,并通过以下方式获得响应:

fractal($release, new ReleaseTransformer())->toArray();

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

4

1 回答 1

0

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

$data = fractal($release, new ReleaseTransformer())->toArray();

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

PS:我不确定在我提到的场景中使用转换器是否正确,但如果有人需要,只需给出答案。

于 2020-07-09T15:28:42.937 回答