首页 > 解决方案 > Laravel 如何从模型中找到共同的朋友?

问题描述

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

不清楚的请问我...

我的朋友桌;

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

标签: laravelmodellaravel-8mutual-friendship

解决方案


我通过使用助手来完成这项工作。我在 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

推荐阅读