Intereting Posts
Переназначение массива освобождает память, используемую им? PHP: как вывести список следующим образом: AA, AB, AC, вплоть до ZZZY, ZZZZ, ZZZZA и т. Д. Как добавить двойную кавычку в значениях внутри переменной PHP и преобразовать ее в массив Отправить письмо с помощью gmail smtp в zend? Может ли транзакция PayPal включать третью сторону? Французский атрибут apostrophe в базе данных mysql? добавление gmt раз в php Закройте сеанс и запустите новый Как заменить все пробелы внутри элементов HTML на & nbsp; используя preg_replace? Phonegap В запрошенном ресурсе присутствует заголовок «Access-Control-Allow-Origin». Происхождение 'null', следовательно, не допускает доступа getimagesize () vs finfo_file () для определения типа изображения? Преобразование времени GMT в локальное время с использованием смещения часового пояса в php Перерыв в Smarty's / Dwoo's foreach Разделить слово заглавной буквой Использовать модель изнутри cakephp библиотеки

Модуль авторизации Kohana 3, получение пользователей с ролью «персонал» или «менеджер»

Я изучаю структуру и теперь создаю приложение, использующее его.

Мне нужно, чтобы все пользователи имели роль «пользователь» или «штат», но я не мог найти об этом в документации.

Помогите кому-нибудь? (Я думаю, что это больше проблема ORM в модуле auth)

Я не нашел простой способ сделать это с помощью ORM, но у меня есть обходной путь.
Это мой код для всех, кто может столкнуться с той же проблемой со мной.

// One for each role $staffs = ORM::factory('role', array('name' => 'staff'))->users->find_all()->as_array(); $managers = ORM::factory('role', array('name' => 'manager'))->users->find_all()->as_array(); // Merge the results $results = array_merge($staffs, $managers); 

Может быть, вам следует создать для него отдельный метод ORM? Что-то вроде этого кода:

 public function get_users(array $roles) { $users = DB::select(array($this->_has_many['roles']['foreign_key'], 'id')) ->distinct(TRUE) ->from($this->_has_many['roles']['through']) ->where($this->_has_many['roles']['far_key'], 'IN', DB::expr('('.implode(',', $roles).')')) ->execute($this->_db); if (count($users) == 0) { // return empty list return array(); } // now we need only IDs from result $ids = array(); foreach($users as $columns) { $ids[] = $columns['id']; } // load users by id return $this->where($this->_primary_key, 'IN', DB::expr('('.implode(',', $ids).')'))->find_all(); } 

$ role – это массив role_id (а не имена!). PS. Я не помню, как запросить «WHERE IN», поэтому я использую выражения DB.