如何在 Laravel 中使用分形转换器返回数组而不是集合



我正在一个基于 Laravel的 REST API 项目中使用分形转换器。我有一个$defaultInclude,因此在转换器类(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();

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

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

$data = fractal($release, new ReleaseTransformer())->toArray();
$dataAsArray = collecet($data)->flatten()->all();

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

相关内容

  • 没有找到相关文章

最新更新