kohana orm 选择具有所有给定角色的用户
Posted
技术标签:
【中文标题】kohana orm 选择具有所有给定角色的用户【英文标题】:kohana orm select users with all given roles 【发布时间】:2014-09-05 13:33:10 【问题描述】:我需要选择具有所有给定角色的用户。 在 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;
但这不起作用。 问候。
【问题讨论】:
看这个:***.com/questions/3552875/… 谢谢,但我知道这个问题。我需要同时选择具有两个角色的用户(“和”,而不是“或”)。问候 【参考方案1】:如果您关注 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 约定。
【讨论】:
【参考方案2】:我会为这个问题建议一种不同的方法:
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;
【讨论】:
以上是关于kohana orm 选择具有所有给定角色的用户的主要内容,如果未能解决你的问题,请参考以下文章