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, но я действительно задаюсь вопросом, есть ли лучший способ сделать это.