2014-09-05 105 views
0

我需要选择具有所有给定角色的用户。 在Model_User我有:kohana orm选择具有所有给定角色的用户

public function getUsers() { 

    $users = $this 
      ->join('roles_users')->on('roles_users.user_id', '=', 'user.id') 
      ->where('role_id', '=', ORM::factory('Role', array('name' => 'login'))) 
      ->and_where('role_id', '=', ORM::factory('Role', array('name' => 'simple_user'))); 

    return $users; 
} 

但是,这是行不通的。 此致敬礼。

+0

看到这个:http://stackoverflow.com/questions/3552875/kohana-3-auth-module-getting-users-with-员工或经理角色 – Ryan 2014-09-05 13:49:15

+0

谢谢,但我知道这个问题。我需要选择具有两种角色的用户('和',而不是'或')。问候 – masteryoda 2014-09-05 14:20:01

回答

0

如果你将跟随链接,瑞安的帖子,你可以修改脚本是这样的:

public function get users() { 

    $login = ORM::factory('role', array('name' => 'login'))->users->find_all()->as_array(); 
    $simple_user = ORM::factory('role', array('name' => 'simple_user'))->users->find_all()->as_array(); 

    return array_intersect($login, $simple_user); 
} 

然后,作为结果,你应该只具有这两个角色的用户。

另一个小问题是你应该按照函数名称中的kohana约定。

0

我建议对于这个问题不同的方法:

public function getUsers() { 
    // Get IDs of all users having "login" role 
    $active_users = ORM::factory('Role', array('name' => 'login'))->users->find_all()->as_array(null, 'id'); 
    // Select all users having roles "simple user" and "login" 
    $users = ORM::factory('Role', array('name' => 'simple_user'))->users->where('id', 'IN', $active_users)->find_all(); 
    return $users; 
} 
相关问题