对于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 数据呢
查询『即是编辑又是特殊用户』,其实就是获取
role_id=2
和role_id=4
的 user_id 的交集,用 SQL 可以写成:在 Laravel 中可以写成: