Joomla: получить всех пользователей в группу

Я работаю над компонентом, в котором я хочу показать всех пользователей определенной группы пользователей. Прямо сейчас я нашел два решения для этого, но я не чувствую себя комфортно с ними обоими.

Решение 1

$usersID = JAccess::getUsersByGroup(3);
$users = array();
foreach($usersID as $cUserID)
{
    $users[] = JFactory::getUser($cUserID);
}

Кажется, что этот вызов производит два запроса к базе данных каждый раз, когда вызывается JFactory::getUser($cUserID). Я действительно не хочу этого.

Решение 2

функция внутри модели

function getUsers()
{
    if(!isset($this->users))
    {
        $groupID = 3;

        $db    = JFactory::getDbo();
        $query = $db->getQuery(true);

        $select = array( 'users.id', 'users.name');
        $where = $db->quoteName('map.group_id') . ' = ' . $groupID;

        $query
            ->select($select)
            ->from( $db->quoteName('#__user_usergroup_map', 'map') )
            ->leftJoin( $db->quoteName('#__users', 'users') . ' ON (map.user_id = users.id)' )
            ->where($where);

        $db->setQuery($query);
        $this->users = $db->loadObjectList();
    }

    return $this->users;
}

Это работает как шарм, но я чувствую, что должен быть "более Joomla! Способ" сделать это. Я не люблю работать за их столами.

Прямо сейчас я собираюсь с решением 2, но я действительно задаюсь вопросом, есть ли лучший способ сделать это.

0 ответов

Другие вопросы по тегам