当我们使用集合时,我想将attribut添加到资源中!
PostResource:
public function toArray($request)
{
return [
'id' => $this->id,
'content' => $this->content,
'user' => new UserResource($this->whenLoaded('user')),
];
}
PostCollection:
public function toArray($request)
{
return [
'data' => $this->collection
];
}
在控制器中:
$posts = Post::with('user')->get();
return PostResource::collection($posts);
返回
["data": { ["id":1 , "content" : "some test" , "users": [....] }]
我们想添加另一个属性(短文本(
["data": { ["id":1 , "content" : "some test" , "users": [....] , "short_text" : substr($this->content",0,255) }]
怎么做?
我们不想编辑PostResource,因为short_text将包含在每个请求中。
当我们只使用集合时,我们不希望包含它!
所以:
localhost/api/posts
返回
["data": { ["id":1 , "content" : "some test" , "users": [....] , "short_text" : substr($this->content",0,255) }]
和
localhost/api/post/1
返回:
["id":1 , "content" : "some test" , "users": [....] ]
没有的short_text属性
正如文档中所述,您可以这样做:
class PostCollection extends ResourceCollection
{
public function toArray($request)
{
return [
'data' => $this->collection,
'short_text' => 'my-short-text',
];
}
}
当然,你可以随心所欲地塑造它,使其具有所需的结构。