属性 [posts] 在此集合实例上不存在 laravel
Property [posts] does not exist on this collection instance laravel
我有三张表
Users
id name email
friends
id user_id friend_id
Posts
id image users_id
我想显示登录用户及其所有好友的所有 post。
获得 post 的登录用户 我做到了
$user_id=Auth::user()->id;
$data=User::find($user_id)->posts;
但无法获得所有朋友的 post 我试过这个
$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.
有没有办法解决这个问题
实际上,如果你使用 eloquent smart:
,一行就可以实现
$user = User::find($user_id);
$posts = Post::whereIn('users_id', $user->friends()->pluck('id'))->get()
return $posts;
如果 $user_id 是 auth 用户,那么您也可以使用它:
$posts = Post::whereIn('users_id', auth()->user()->friends()->pluck('id'))->get()
您首先必须获得您的用户:
$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();
我有三张表
Users
id name email
friends
id user_id friend_id
Posts
id image users_id
我想显示登录用户及其所有好友的所有 post。 获得 post 的登录用户 我做到了
$user_id=Auth::user()->id;
$data=User::find($user_id)->posts;
但无法获得所有朋友的 post 我试过这个
$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.
有没有办法解决这个问题
实际上,如果你使用 eloquent smart:
,一行就可以实现$user = User::find($user_id);
$posts = Post::whereIn('users_id', $user->friends()->pluck('id'))->get()
return $posts;
如果 $user_id 是 auth 用户,那么您也可以使用它:
$posts = Post::whereIn('users_id', auth()->user()->friends()->pluck('id'))->get()
您首先必须获得您的用户:
$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();