gpt4 book ai didi

php - joomla 不显示用户组 php 的完整 map

转载 作者:行者123 更新时间:2023-11-30 23:17:24 25 4
gpt4 key购买 nike

所以我从后端在 Joomla 中创建了一些自定义用户组。我将注册用户放在这些自定义组下。群是这样的-

公开
|— 用户
|—|— 审核员
|—|— Custom_group1
|—|—|— Custom_group2
|—|—|—|— Custom_group3
|—|—|—|—|— 管理员
|—|—|—|—|—|— super 用户
|—|— Custom_group4

所以,假设 user_b 在组 Custom_group4 下,也在 Custom_group3 下,其中自定义组 3 和 4 的 id 是 2 和11分别(说),MySql 数据库看起来像-

表:#__users

id       name           username           email               password     
523 User A user_a user_a@mysite.com blablabla...
524 User B user_b user_b@mysite.com blablabla...

表:#__user_usergroup_map

user_id(Foreign Key to #__users.id)       group_id(Foreign Key to #__usergroups.id)
523 8
524 2
524 11

您可以看到为用户 ID 524 分配了两个组。现在我有了这个 PHP 代码来获取用户的组 ID(用户 id-524)

        $user = JFactory::getUser();
$userId = $user->id;
$db = JFactory::getDbo();
$recursive = False;

// Build the database query to get the rules for the asset.
$query = $db->getQuery(true);
$query->select('ug.group_id');
$query->from('#__user_usergroup_map AS ug');
$query->leftJoin('#__users AS a ON a.id = ug.user_id');
$query->where('a.id = '.(int) $userId);

// Execute the query and load the rules from the result.
$db->setQuery($query);
$result = $db->loadResult();
print_r((array)$result);

其中,我得到了输出-

Array([0] => 2)

但我希望它是Array([0] => 2, [1]=> 11)

谁能帮帮我?

最佳答案

已解决。

我查看并找到了类似的函数 here ,使用类似的查询(如预期更好)。

这是该代码的一部分-

        $query  = $db->getQuery(true);
$query->select($recursive ? 'b.id' : 'a.id');
$query->from('#__user_usergroup_map AS map');
$query->where('map.user_id = '.(int) $userId);
$query->leftJoin('#__usergroups AS a ON a.id = map.group_id');

// If we want the rules cascading up to the global asset node we need a self-join.
if ($recursive) {
$query->leftJoin('#__usergroups AS b ON b.lft <= a.lft AND b.rgt >= a.rgt');
}

// Execute the query and load the rules from the result.
$db->setQuery($query);
$result = $db->loadResultArray();

唯一的区别在于获取表信息的方式。

我现在会简单地使用它作为-

jimport( 'joomla.access.access' );
$groups = JAccess::getGroupsByUser(526, False); //526 is the user_id for user b
print_r($groups);

这就是我想要的-

Array ( [0] => 2 [1] => 11 )

谢谢谷歌。

关于php - joomla 不显示用户组 php 的完整 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17051525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com