laravel - Laravel 多对多关系获取由两个用户模型共享的角色
问题描述
如果我在用户和角色之间有多对多关系并且两个用户之间有共享角色,那么问题很简单是否有一种雄辩的方式来获得该共享角色,或者我是否必须调用他们的每个角色并使用两个 foreach 循环以匹配他们的记录。
解决方案
我认为以下查询应该可以解决问题:
$userId1 = 123; // just some assumption...
$userId2 = 234; // can of course be a user object as well
$roles = Role::query()
->whereHas('users', function ($query) use ($userId1) {
$query->where('users.id', $userId1);
})
->whereHas('users', function ($query) use ($userId2) {
$query->where('users.id', $userId2);
})
->get();
换句话说,该查询基本上意味着:给我所有与 id 用户以及 id 用户相关联$userId1
的角色$userId2
。
推荐阅读
- php - 我应该在我的 PHP 代码中使用线程吗?
- go - 使用 BLPOP 处理 Redis 队列会导致单元测试中出现竞争条件?
- database - 如何在 Oracle db 中插入父表和相关子表?
- bash - 有没有办法在选择案例后重新运行 bash 脚本?
- sql - 在 Graphql 中查询数组
- php - `brew list`中的php@7.2中的@是什么意思
- dotnetbrowser - 如何从 DotNetBrowser 中的请求访问有效负载数据
- javascript - XMLHttpRequest POST _self 使用 localStorage 和 PHP
- mysql - GROUP BY 返回多于一行 MYSQL
- c# - 多线程环境中的事件