对于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贡献1828条经验 获得超3个赞
查询『即是编辑又是特殊用户』,其实就是获取 role_id=2
和 role_id=4
的 user_id 的交集,用 SQL 可以写成:
SELECT user_idFROM role_userWHERE role_id IN (2, 4)GROUP BY user_idHAVING 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()
繁花不似锦
TA贡献1851条经验 获得超4个赞
只需要改写一下where条件就ok了
User::with('roles')->whereHas('roles', function($query) { $query->where('role_id', 2) ->where('role_id', 4); })->get();
- 2 回答
- 0 关注
- 1901 浏览
添加回答
举报
0/150
提交
取消