Laravel 多对多关联查询

对于Laravel的多对多关联该如何查询
三个表
user
id
name
1
aaa
2
bbb
3
ccc
role
id
name
1
管理员
2
编辑
3
普通用户
4
特殊用户
role_user
role_id
user_id
1
1
2
3
3
3
4
1
2
3
2
2
4
2
3
2
模型里都定义了正确的多对多关联
User::with('roles')->whereHas('roles',function($query){
$query->whereIn('role_id',[2,4]);
})->get();
如果使用上面这种方式查询出来的是用户权限为『编辑或者特殊用户』的用户。该如何查询『即是编辑又是特殊用户』的user数据呢
牧羊人nacy
浏览 672回答 2
2回答

四季花海

查询『即是编辑又是特殊用户』,其实就是获取role_id=2和role_id=4的user_id的交集,用SQL可以写成:SELECTuser_idFROMrole_userWHERErole_idIN(2,4)GROUPBYuser_idHAVINGCOUNT(user_id)=2在Laravel中可以写成:User::with('roles')->whereHas('roles',function($query){$query->whereIn('role_id',[2,4])->groupBy('user_id')->havingRaw('COUNT(user_id)=?',[2]);})->get()

幕布斯7119047

只需要改写一下where条件就ok了User::with('roles')->whereHas('roles',function($query){$query->where('role_id',2)->where('role_id',4);})->get();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript