laravel - 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
解决方案
我通过使用助手来完成这项工作。我在 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
推荐阅读
- javascript - 如何用画布制作无限网格?
- flutter - Flutter 示例 Hello world Flutter 应用程序构建失败:任务“:app:mergeDebugResources”执行失败
- flutter - 我无法从 Flutter 中的 javaScript 获取数据
- ios - 应用程序仅在 iPhone 8 iOS 14.4.1 上因内存不足而崩溃
- linux - 监听 nftables 防火墙 ULOG 日志
- python - 为什么sympy不能计算?
- node.js - 如何在没有引擎模板的情况下将动态 html 文件添加到 nodemailer?
- python - Pandas - Python - 查找函数 - 需要遍历
- numpy - Numpy - 如果在另一个数组中找到数组的元素,我该如何擦除它
- pandas - vscode,交互模式,我可以打开ipynb但不能导入我已经安装的模块