如何自己实现类似 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 求指导
别只 @ 我呀,这里高手一堆,你只 @ 我其他人估计就不回复了 :smile_cat:
我没有太好的建议,只能说:放心大胆用吧,有问题再优化。
闹明白了,$task->watchers(),用函数形式取..
@Summer 话说这新的phphub社区还开源吗
@oam87 当然啦,源码在此 https://github.com/summerblue/phphub5
@Summer 棒!向你们致敬!