@entermix

Как в Kohana 3.3. отсортировать роли по количеству пользователей?

Допустим используем стандартный модуль Auth, где есть пользователи и есть роли, как вывести все роли отсортированные по количеству пользователей?
  • Вопрос задан
  • 322 просмотра
Решения вопроса 1
@MAD_B
$data = array();
foreach ( ORM::factory('Role')->find_all() as $role) {
    $data[$role->name] = $role->users->count_all();
}
arsort($data);
echo Debug::vars($data);


Быстрое решение, не оптимальное.

Так лучше:

$data = DB::select(DB::expr('count(user_id) cnt, roles.name'))
    ->distinct(TRUE)
    ->from('roles_users')
    ->join('roles', 'RIGHT')
    ->on('roles_users.role_id', '=', 'roles.id')
    ->group_by('role_id')
    ->order_by('cnt', 'DESC')
    ->execute();
       
echo Debug::vars($data->as_array());
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы