对于Laravel的多对多关联该如何查询三个表useridname1aaa2bbb3cccroleidname1管理员2编辑3普通用户4特殊用户role_userrole_iduser_id1123334123224232模型里都定义了正确的多对多关联User::with('roles')->whereHas('roles',function($query){$query->whereIn('role_id',[2,4]);})->get();如果使用上面这种方式查询出来的是用户权限为『编辑或者特殊用户』的用户。该如何查询『即是编辑又是特殊用户』的user数据呢
2 回答
四季花海
TA贡献1811条经验 获得超5个赞
查询『即是编辑又是特殊用户』,其实就是获取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
TA贡献1794条经验 获得超8个赞
只需要改写一下where条件就ok了User::with('roles')->whereHas('roles',function($query){$query->where('role_id',2)->where('role_id',4);})->get();
添加回答
举报
0/150
提交
取消