我在一个基于Laravel的REST API项目中使用了Fractal Transformers。我有一个$defaultInclude,因此在Transformer类(ReleaseTransformer)中有一个函数来处理includes。具体如下:
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();我如何修改代码,因为它将返回这个数组?
发布于 2020-07-09 23:28:43
我找到了解决此问题的方法。我们可以使用Laravel集合的flatten()方法,它将使返回的数组成为一维。因此代码如下所示:
$data = fractal($release, new ReleaseTransformer())->toArray();
$dataAsArray = collecet($data)->flatten()->all();PS:我不确定在我提到的场景中使用transformers是不是正确,但如果有人需要的话,只需要输入答案。
https://stackoverflow.com/questions/62551328
复制相似问题