通常可以把这些关系弄清楚但却难以理解。
我有一个基本的博客平台,允许用户注册和发布博客帖子。
用户还可以关注其他用户。
我正在试图查看我可以看到我关注的作者的所有博客文章
我有普通用户表,然后是博客帖子表,其中包含创建者的user_id。
对于粉丝,我有一个名为followers的数据透视表,其中包含user_id和follower_id。
这是获取所有帖子的基本路线:
$posts = Post::orderBy('created_at', 'DESC')->get();
如何更改它,以便只显示发布user_id的字段,这些字段是在关注者表中匹配的字段?
感谢。
答案 0 :(得分:0)
您可以尝试这样的事情:
public function favoriteAuthors()
{
return $this->belongsToMany(
User::class, // as Author
'followers', // pivot table
'follower_id', // as follower_id
'user_id', // as author_id
);
}
public function posts()
{
return $this
->hasMany(Post::class, 'user_id', 'id')
->orderBy('created_at', 'DESC');
}
然后加载您最喜欢的作者的所有帖子:
$posts = User::with('favoriteAuthors.posts')->find(auth()->user()->id);
你也可以使用这样的东西:
if($me = auth()->user()) {
$me->load(['favoriteAuthors.posts']);
}
现在$me
将包含您关注的用户,每个用户都会包含他们的帖子。