2

我很好奇,为什么我的资源响应没有包含在data

这是我的资源:

App\Http\Resources\CategoryResource Object
(
    [resource] => stdClass Object
        (
            [id] => 12
            [title] => Category
            [description] => <p>Test</p>

    [with] => Array
        (
        )

    [additional] => Array
        (
        )

)

一旦像这样返回此资源:

$response = $this->client->getApiResponse('/api/category/'.$id); //response comes from third-party-API
$data = new CategoryResource(json_decode ($response->getContents())->data);

return response()->json($data);

输出是

{
  "id": 12,
  "title": "Category",
  "description": "<p>Test</p>"
}

但根据https://laravel.com/docs/5.8/eloquent-resources#data-wrapping它应该是:

{
  "data": {
    "id": 12,
    "title": "Category",
    "description": "<p>Test</p>"
  }
}

为什么data这里缺少-wrapper?

4

1 回答 1

1

数据包装器仅适用于资源收集。如我所见,您没有资源集合。资源集合用于返回结果集合。您正在返回单个类别。所以你应该使用 ResourceCollection 或手动包装它。

看到这个:https ://laravel.com/docs/5.8/eloquent-resources#writing-resources

希望这可以帮助你

于 2020-02-02T16:01:49.017 回答