如何自己实现类似 HasManyThrough 的功能?
就想实现 phphub 的有哪些人关注帖子的功能
一个 topic 表、watch 表、user 表,根据 topic 的 id,获取该帖子有哪些人关注
HasManyThrough 返回的 collection 在 web 中非常方便,但是要想实现 api only,对结果还需要继续操作,就需要自己实现。我写了一个:
public function scopeWatchersOf($query, Topic $topic)
{
return $query->join('watches', function ($join) use ($topic) {
$join->on('watches.topic_id', '=', 'topics.id')
->where('watches.topic_id', '=', $topic->id);
})
->join('users', 'users.id', '=', 'watches.user_id')
->select(['users.id', 'users.name', 'users.avatar']);
}
代码可以完成需要的功能,但请问还有更好的实现方法么?另外还想请问一下,join 拖性能么? @Summer 求指导
推荐文章: