首页 > 解决方案 > 仅显示使用 laravel 雄辩关系的关注用户发布

问题描述

我有 3 个模型User, Follow, 和Post

这些关系就像:

User模型:

public function userPosts()
{
        return $this->hasMany('App\Model\User\Post');

}
public function follows()
{
    return $this->hasMany('App\Model\User\Follow','user_id');

}
public function fans()
{
    return $this->hasMany('App\Model\User\Follow','follow_id');

} 

Post模型

public function user()
{
    return $this->belongsTo('App\User');
}

Follow模型

public function user()
{
    return $this->belongsTo('App\User');
}
public function user_follow()
{
    return $this->belongsTo('App\User','follow_id');
}

每个帖子都属于某个用户。我有一个关注列表,其中用户有关注用户。在关注模型中有 2 列,关注的用户user_idfollow_id关注用户的用户。

现在我想在新闻源中显示帖子我想显示我关注的用户的帖子和我的帖子。

我如何用 Laravel 雄辩的关系向他们展示 我正在使用 Laravel 7.2

标签: phpmysqllaraveleloquent-relationship

解决方案


        Post::where(function ($query) {
            //generating followers and own user_id array
            $followers = Follow::where('user_id', Auth::user()->id)->get();
            $followers_and_me = [];
            array_push($followers_and_me, Auth::user()->id);
            foreach ($followers as $item) {
            array_push($followers_and_me, $item->follow_id);
        }

        //query for specific posts
        for ($i =0; $i<count($followers_and_me); $i++) {
            $query->orWhere('user_id', $followers_and_me[$i]);
        }

        })->orderBy('id', 'desc')->paginate(5);

试试这个


推荐阅读