因此,我将以下表命名为:
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');
}
谢谢您的帮助:)
答案 0 :(得分:2)
您可以这样做:
$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用户,并且还有auth用户的owned
。
如果记录匹配,则此条件$album
将具有“相册”模型的实例,如果不是,则为null,因此您可以执行以下操作:
if($album){
// AUTHENTICATED user is a member of the GROUP owned by the ALBUM
}