首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Laravel5.4中,我如何才能得到用户朋友的帖子?

在Laravel5.4中,我如何才能得到用户朋友的帖子?
EN

Stack Overflow用户
提问于 2018-02-28 12:03:33
回答 3查看 990关注 0票数 3
代码语言:javascript
运行
复制
$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进行匹配,但它只得到第一批好友的帖子,而不是其他的。我怎样才能改变它,以得到所有的朋友,而不仅仅是第一批朋友?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-28 12:18:59

您不需要使用find()执行额外的查询,只需获取所有好友对象的ID即可。这是一个巨大的开销。就这么做吧:

代码语言:javascript
运行
复制
Post::whereIn('user_id', auth()->user()->friends()->pluck('id'))->get()
票数 4
EN

Stack Overflow用户

发布于 2018-02-28 12:06:33

您可以使用whereIn

代码语言:javascript
运行
复制
$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);

一行:

代码语言:javascript
运行
复制
$posts = Post::whereIn('user_id', auth()->user()->friends()->pluck('id'))->get();
票数 2
EN

Stack Overflow用户

发布于 2018-02-28 12:17:07

您可以使用whereIn,为此需要一个ID数组。拔毛函数只为您提供一个特定列(键)的集合,因此您需要调用它上的toArray来拥有一个包含值的数组,而不是一个集合。此外,您可以使用User::find消除额外的查询,因为您正在查找经过身份验证的用户,并且已经使用Auth::user()查询了该查询。

所以我想说你需要以下几点:

代码语言:javascript
运行
复制
$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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49029157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档