我正在一个基于 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:我不确定在我提到的场景中使用变压器是否正确,但如果有人需要,只需给出答案。