具有 Relation 和 Eloquent 的 Laravel Api 资源
Posted
技术标签:
【中文标题】具有 Relation 和 Eloquent 的 Laravel Api 资源【英文标题】:Laravel Api Resource with Relation and Elequent 【发布时间】:2020-04-22 18:43:52 【问题描述】:我们有一个模型“帖子”,每个帖子类型都是艺术家、歌曲、专辑 艺术家与歌曲和专辑有多对多的关系 每篇文章的标题都来自 eloquent with meta Model
我们需要返回每个帖子(例如歌曲)以及艺术家关系及其标题(歌曲标题和艺术家标题) 而这需要一个回帖(歌曲)和一个收藏帖(歌曲)
在 PostController 中:
public function index()
return PostResource::collection(Post::with('artists')->with('title')->paginate(25));
在 PostResource 中:
public function toArray($request)
return [
'id' => $this->id,
'slug' => $this->slug,
'title' => $this->title,
'artists' => $this->artists->title,
];
主要问题是歌曲的艺术家,当使用 'title' => $this->title
时它适用于歌曲(帖子类型歌曲)但当使用 'artists' => $this->artists->title
时它不起作用
谢谢
【问题讨论】:
很明显'artists' => $this->artists->title
不起作用,因为$this->artists
返回一个集合而不是一条记录。
【参考方案1】:
您可以使用pluck 方法从艺术家集合中获取标题集合:
'artists' => $this->artists->pluck('title')->all(),
【讨论】:
它不起作用,标题来自与艺术家(帖子)相关的元模型以上是关于具有 Relation 和 Eloquent 的 Laravel Api 资源的主要内容,如果未能解决你的问题,请参考以下文章
从 table1 中检索数据,但在 table2 中进行比较 - Laravel eloquent