首页 > 解决方案 > 此集合实例 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.

有没有逃避这个问题

标签: laraveleloquent-relationship

解决方案


您首先必须让您的用户: $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();


推荐阅读