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

我正在尝试使用 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);

}


波斯汪
浏览 90回答 2
2回答

慕仙森

public function index(){    $categories = Category::all();    return (CategoryResource::collection($categories));}这可能有帮助,试试这个如果你想使用帖子资源,你需要在 CategoryResource 中创建帖子资源'posts'=>PostResource::collection($this->posts)

FFIVE

不能使用集合中的资源。用这个public function index(){    $categories = Category::all();    return (new CategoryCollection($categories));}
打开App,查看更多内容
随时随地看视频慕课网APP