php - Laravel 5.4 使用数据透视表查询数据库
问题描述
所以,我有以下表命名:
ALBUMS(id, name, shared, group_id, user_id)
GROUPS(id, name, user_id)
GROUP_USER(group_id, user_id)
我想要做的是,使用 Laravel Eloquent 通过检查 AUTHENTICATED 用户是否是 ALBUM 拥有的 GROUP 的成员来获取查询结果。
专辑型号:
public function groupSecurity()
{
return $this->belongsTo(Group::class, 'group_id');
}
团体模型:
public function ownedBy()
{
return $this->belongsTo(User::class, 'user_id');
}
public function members()
{
return $this->belongsToMany(User::class, 'group_user');
}
谢谢您的帮助 :)
解决方案
你可以这样做:
$album = Album::whereHas('groupSecurity', function ($query) {
$query->whereHas('members', function($query2){
$query2->where('user_id', auth()->user()->id);
})->where('user_id', auth()->user()->id);
})->first();
因此,您搜索一张专辑,该专辑groupSecurity
在他members
的 auth 用户中有一个,而且它也是owned
由 auth 用户提供的。如果记录匹配此条件$album
将具有 Album 模型的实例,否则它将为 null,因此您可以执行以下操作:
if($album){
// AUTHENTICATED user is a member of the GROUP owned by the ALBUM
}
推荐阅读
- javascript - 添加另一个滚动功能时,Bootstrap scrollspy 停止工作
- r - 清理数据表
- javascript - Excel 以 HTML 格式读取(例如 Javascript)
- php - Unix 时间戳加 2 周、4 周、6 周、8 周
- ruby-on-rails - ActiveAdmin 中的传递/临时变量
- python - 根据id获取名字
- excel - 如何修复设置范围内的 VBA MS 访问错误 462?
- javascript - sessionStorage.get() - 获取当前键值
- authentication - Vue + Firestore 将 userGroup 分配给 Article 并将 User 分配给 UserGroup
- excel - 用于 Userform1 上的复选框的 Excel 2016 VBA 代码,以指定要传输到另一张工作表的数据(同一工作簿)