我想知道是否可以为项目资源和集合资源定义不同的数据.
对于收集我只想发送[‘id’,’title’,’slug’],但项目资源将包含额外的细节[‘id’,’slug’,’user’等]
我希望实现以下目标:
class PageResource extends Resource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,'title' => $this->title,'slug' => $this->slug,'user' => [
'id' => $this->user->id,'name' => $this->user->name,'email' => $this->user->email,],];
}
}
class PageResourceCollection extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,];
}
}
PageResourceCollection将无法按预期工作,因为它使用PageResource所需
return [
'data' => $this->collection,];
我可以将资源复制到PageFullResource / PageListResource和PageFullResourceCollection / PageListResourceCollection中,但我试图找到一种更好的方法来实现相同的结果.
本文探讨如何为项目资源和集合资源定义不同数据结构,如PageResource和PageResourceCollection。作者提出在PageResource中增加详细用户信息,而在PageResourceCollection中仅返回基本ID。寻求最优实践,以简化API并确保数据一致性。
2288

被折叠的 条评论
为什么被折叠?



