我正在创建一些自定义查询,需要弄清楚成员组和文档组之间的关系。
我的最终目标是在用户登录时显示属于特定用户组的资源。我能够从Sessions获取他们的用户ID,因此我到目前为止所知道的关系是:
用户ID - >会员组表 - > ??Unknown table that pairs Member Groups with Document Groups??
- >文档组表 - >资源表
我只是找不到丢失的表格!
如果有人可以帮助我,那就太棒了!
由于
(ps:使用Revo)
编辑:添加图像以进行协助
答案 0 :(得分:0)
您可以使用一些内置的MODX方法来实现这一目标。
这未经过测试,可能无效,但这可能是一种方法:
// userGroups = membergroups
$userGroups = $user->getUserGroups();
foreach ($userGroups as $userGroup) {
$resGroups = $userGroup->getResourceGroups();
foreach ($resGroups as $resGroup) {
$resources = $resGroup->getResources();
// merge resources into an array or something
}
}
查看 moduser.class.php , modusergroup.class.php 和 modresourcegroup.class.php ,查看这些背后的查询方法。您可以将它们调整为更有效的查询。
另外,如果我没有误解你想要达到的目的,那么你的结果应该与用户在登录时在资源树中看到的结果类似?
使用resource / getnodes.class.php处理器,该处理器使用getCollection检索每个上下文的所有可能资源,然后遍历每个处理器并使用$resource->checkPolicy('list')
决定是否显示。这可能是另一种需要考虑的方法。
我通常使用自定义数据而非MODX资源,因此我们非常希望了解您如何继续使用它。
答案 1 :(得分:0)
我知道这真的非常古老,但我自己也遇到了这个问题。经过一番挖掘后,我发现这是access_resource_groups
表链接document_groups
和member_groups
document_groups.id
= access_resource_groups.target
member_groups.id
= access_resource_groups.principal