3 回答
TA贡献1842条经验 获得超22个赞
查询『即是编辑又是特殊用户』,其实就是获取 role_id=2 和 role_id=4 的 user_id 的交集,用 SQL 可以写成:
SELECT
user_id
FROM
role_user
WHERE
role_id IN (2, 4)
GROUP BY
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()
TA贡献1906条经验 获得超3个赞
只需要改写一下where条件就ok了
User::with('roles')->whereHas('roles', function($query) {
$query->where('role_id', 2)
->where('role_id', 4);
})->get();
TA贡献1780条经验 获得超5个赞
或者试一下
User::with('roles')->whereHas('roles', function($query) {
$query->where([['role_id', 2],['role_id',4]]);
})->get();
- 3 回答
- 0 关注
- 808 浏览
添加回答
举报
