Laravel 如何从模型中找到共同好友?

Laravel How to find Mutual Friends from model?

我正在使用 laravel 8。 我想找到条目和个人资料的共同好友。

有不清楚的地方请问我...

我的朋友们table;

user_friends;
id | user_id | user_friend_id
1  | 10      | 20
2  | 20      | 10

在我的用户模型中;

    public function friends(){
     return $this->belongsToMany(User::class, 'user_friends', 'user_id', 'user_friend_id');
    }

    public function friendsOf(){
     return $this->belongsToMany(User::class, 'user_friends', 'user_friend_id', 'user_id');
    }

如何找到已验证用户的个人资料的共同朋友?

示例;

@foreach($user as $entry)
{{ count( $entry->mutual(Auth::id()) ) }}
  @foreach($entry->mutual(Auth::id()) as $item)
   {{ $item->name }}
   ...
  @endforeach
@endforeach

我使用助手来完成这项工作。我在 App 文件夹上创建 helpers.php 并创建一个函数。

function mutualFriends($id){
 $profile = User::where('id', $id)->first();
 $profileFriends = $profile->friends;
 $profileFriendsIds = [];
   foreach ($profileFriends as $entry){
     $profileFriendsIds[] = $entry->id;
    }
 $loggedUserFriends = Auth::user()->friends->whereIn('id', $profileFriendsIds);

 return $loggedUserFriends;
}

现在我从视图中调用该函数;

{{count(mutualFriends(Auth::id()))}}

@foreach(mutualFriends($profile->id) as $entry)
...
@endforeach