我需要选择具有所有给定角色的用户。 在Model_User中我有:
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 :(得分:0)
如果您要关注Ryan发布的链接,您可以通过以下方式修改该脚本:
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惯例。
答案 1 :(得分: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;
}