我正在尝试使用Laravel的资源和Collection构建一个小的API。
我想恢复所有类别的帖子
我与模型的关系:
/*
|--------------------------------------------------------------------------
| RELATIONS
|--------------------------------------------------------------------------
*/
public function posts()
{
return $this->belongsToMany(Post::class, 'post_category');
}
类别控制器:
public function index()
{
$categories = Category::all();
return (new CategoryCollection(CategoryResource::collection($categories)));
}
我的类别资源:
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'slug' => $this->slug
];
}
我的CategoryCollection
public function toArray($request)
{
return [
'data' => $this->collection,
'posts' => PostResource::collection($this->whenLoaded('posts')),
];
}
我尝试首先恢复某个类别的帖子。当我执行以下命令时,出现错误:方法... lationLoaded不存在
'posts' => PostResource::collection($this->whenLoaded('posts'))
我不明白什么?
我还创建了两个PostCollection和PostResource文件(基本,我没有修改它们)
public function toArray($request)
{
return parent::toArray($request);
}
答案 0 :(得分:1)
public function index()
{
$categories = Category::all();
return (CategoryResource::collection($categories));
}
这可能会有所帮助,请尝试
,如果要使用帖子资源 您需要制作帖子资源 并在CategoryResource内
'posts'=>PostResource::collection($this->posts)
答案 1 :(得分:0)
无法使用集合中的资源。 使用这个
public function index()
{
$categories = Category::all();
return (new CategoryCollection($categories));
}