1

我正在开发一个组件,我想在其中显示特定用户组的所有用户。现在我找到了两种解决方案,但我对它们都感到不舒服。

解决方案 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,但我真的想知道是否有更好的方法来做到这一点。

4

0 回答 0