为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 资源 - 从关系中获取数据

Laravel 资源 - 从关系中获取数据

PHP
波斯汪 2022-07-22 16:05:24
我正在尝试使用 Laravel 的资源和集合来构建一个小型 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    ];}我的分类收藏public function toArray($request){    return [        'data' => $this->collection,        'posts' => PostResource::collection($this->whenLoaded('posts')),    ];}我尝试先恢复某个类别的帖子。当我执行以下命令时,出现错误:Method ... relationLoaded 不存在'posts' => PostResource::collection($this->whenLoaded('posts'))我不明白什么?我还创建了两个 PostCollection 和 PostResource 文件(基本,我没有修改它们)public function toArray($request){    return parent::toArray($request);}
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

public function index()


{

    $categories = Category::all();


    return (CategoryResource::collection($categories));

}

这可能有帮助,试试这个


如果你想使用帖子资源,你需要在 CategoryResource 中创建帖子资源


'posts'=>PostResource::collection($this->posts)


查看完整回答
反对 回复 2022-07-22
?
FFIVE

TA贡献1797条经验 获得超6个赞

不能使用集合中的资源。用这个


public function index()

{

    $categories = Category::all();


    return (new CategoryCollection($categories));

}


查看完整回答
反对 回复 2022-07-22
  • 2 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信