laravel - 此集合实例 laravel 上不存在属性 [posts]
问题描述
我有三张桌子
Users
id name email
friends
id user_id friend_id
Posts
id image users_id
我想显示登录用户和他所有朋友的所有帖子。为了获得登录用户的帖子,我做到了
$user_id=Auth::user()->id;
$data=User::find($user_id)->posts;
但无法获得所有朋友的帖子我试过这个
$friend_id = [];
$friends=User::find($user_id)->friends; //get all friends it returns like that [2,3]
foreach ($friends as $friend) {
$friend_id[]=$friend->friend_id;
}
$data=[];
foreach($friend_id as $friend)
{
$data[]=User::find($user_id)->get()->posts;
}
return $data;
但它给了我那个错误
Property [posts] does not exist on this collection instance.
有没有逃避这个问题
解决方案
您首先必须让您的用户:
$user = Auth::user();
可以像这样检索用户的朋友(更好的 id):
$friend_ids = $user->friends()->pluck('id')
之后,您需要将当前用户的 id 添加到 id 数组中:
$all_ids = array_push($friend_ids, $user->id)
最后,您可以检索所有帖子:
$posts = Posts::whereIn('user_id', $all_ids)->get();
推荐阅读
- javascript - React Native web 故事书 react-native-vector-icons 问题图标
- swift - Swift UI 在集合中绑定 TextField
- bash - 当您有 grep.lineNumber=true 时,如何禁用 git grep 中的行号?
- nginx - 代理应该在 Host 标头中传递什么?
- parsing - 如何在 ANTLR 语法中指定行首关键字(这也适用于第一行输入)
- go - 如何将负数分配给接受 UINT 参数的函数
- javascript - 如何使用“while”循环创建在数组中添加数字的函数?
- xamarin.forms - Xamarin.Forms 为什么我的点击命令不起作用?
- python - 如何使用 Python 将网站内容复制到 Markdown 文件?
- java - 生成一个始终平衡的二叉搜索树,只有真正的插入