$user_id = auth::user()->id;
$user_friends = User::find($user_id)->friends;
$user_friends_id = $user_friends->pluck('id');
$posts = Post::where('user_id', $user_friends_id)->get();
return view('dashboard')->with('posts', $posts);到目前为止,我已经在$user_friends_id中获得了用户朋友的id,然后将其与帖子上的用户id进行匹配,但它只得到第一批好友的帖子,而不是其他的。我怎样才能改变它,以得到所有的朋友,而不仅仅是第一批朋友?
发布于 2018-02-28 12:18:59
您不需要使用find()执行额外的查询,只需获取所有好友对象的ID即可。这是一个巨大的开销。就这么做吧:
Post::whereIn('user_id', auth()->user()->friends()->pluck('id'))->get()发布于 2018-02-28 12:06:33
您可以使用whereIn:
$user_id = auth::user()->id;
$user_friends = User::find($user_id)->friends;
$user_friends_id = $user_friends->pluck('id');
$posts = Post::whereIN('user_id', $user_friends_id)->get();
return view('dashboard')->with('posts', $posts);一行:
$posts = Post::whereIn('user_id', auth()->user()->friends()->pluck('id'))->get();发布于 2018-02-28 12:17:07
您可以使用whereIn,为此需要一个ID数组。拔毛函数只为您提供一个特定列(键)的集合,因此您需要调用它上的toArray来拥有一个包含值的数组,而不是一个集合。此外,您可以使用User::find消除额外的查询,因为您正在查找经过身份验证的用户,并且已经使用Auth::user()查询了该查询。
所以我想说你需要以下几点:
$user_friends = Auth::user()->friends;
$user_friends_id = $user_friends->pluck('id')->toArray();
$posts = Post::whereIn('user_id', $user_friends_id)->get();
return view('dashboard')->with('posts', $posts);https://stackoverflow.com/questions/49029157
复制相似问题