Laravel关系显示他们关注的作者的所有帖子

时间:2016-04-03 09:58:03

标签: php laravel-5

通常可以把这些关系弄清楚但却难以理解。

我有一个基本的博客平台,允许用户注册和发布博客帖子。

用户还可以关注其他用户。

我正在试图查看我可以看到我关注的作者的所有博客文章

我有普通用户表,然后是博客帖子表,其中包含创建者的user_id。

对于粉丝,我有一个名为followers的数据透视表,其中包含user_id和follower_id。

这是获取所有帖子的基本路线:

$posts = Post::orderBy('created_at', 'DESC')->get();

如何更改它,以便只显示发布user_id的字段,这些字段是在关注者表中匹配的字段?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

App \ User Model:

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将包含您关注的用户,每个用户都会包含他们的帖子。