Laravel计算和检索多对多的关系

时间:2014-09-29 18:14:33

标签: laravel many-to-many eloquent repository-pattern

我有很多很多Laravel关系很多用户都有很多角色

我知道我可以执行User :: find(1) - > roles() - > get()来获取用户ID为1的所有角色,但这需要我知道ID的ID角色反对其名称

我可以在我的用户存储库中添加什么样的雄辩查询来执行类似

的操作
public function getAllUsersWithRole($roleType){

  //Query goes here

}

其中$ roleType是角色的名称。所以我需要根据hte名称查找角色的ID,然后返回在数据透视表中具有该角色ID的用户

3 个答案:

答案 0 :(得分:3)

这看起来像您想要的吗?

public function getAllUsersWithRole($roleType){

  $role= Role::where('name', $roleType)->first();
  $users= $role->users;

  return $users;

}

答案 1 :(得分:0)

如果您的Eloquent模型中有正确的关系定义,您应该能够通过角色名称获取用户:

$roleType = 'YourRoleName';
$users = Role::whereType($roleType)->first()->users;

答案 2 :(得分:-1)

抓住用户,然后获取所有用户的角色。

public function getAllUsersWithRole($roleType){

  $users = User::where('role_type', '=', $roleType)->get();
  $roles = $users->roles()->get();

  return $roles;

}