为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 多对多关联查询

Laravel 多对多关联查询

牧羊人nacy 2019-04-27 22:20:07
对于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可以写成:
SELECT
user_id
FROM
role_user
WHERE
role_idIN(2,4)
GROUPBY
user_id
HAVING
COUNT(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()
                            
查看完整回答
反对 回复 2019-04-27
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

只需要改写一下where条件就ok了
User::with('roles')->whereHas('roles',function($query){
$query->where('role_id',2)
->where('role_id',4);
})->get();
                            
查看完整回答
反对 回复 2019-04-27
  • 2 回答
  • 0 关注
  • 671 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信