首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Extbase fe_user findByUsergroup

Extbase fe_user findByUsergroup
EN

Stack Overflow用户
提问于 2018-02-13 13:09:37
回答 3查看 462关注 0票数 0

我想列出属于指定用户组的所有fe_users。如果用户只分配了一个用户名组(),那么下面的工作得很好

代码语言:javascript
运行
复制
$users = $this->userRepository->findByUsergroup($this->settings['fachgruppe']);
$this->view->assign('users', $users);

但是会有超过一个组分配的用户,结果将是空的。这些用户组不是m:n关系,而是一个逗号分隔的字符串,看起来是:11,12,28,但这是如何构建的,我对此没有控制权。

(如何)是否有可能使所有用户都与多个用户组相关联?

EN

回答 3

Stack Overflow用户

发布于 2018-02-13 13:22:45

对于多个查询值和单个值属性,通常使用QueryInterface::in(),对于单个查询值和多值属性,则使用QueryInterface::contains()

但是这里有多个查询值和一个具有多个值的属性。因此,您需要如下所示的自定义存储库方法:

代码语言:javascript
运行
复制
public function findByUserGroups(array $userGroups): QueryResultInterface
{
    $query = $this->createQuery();
    $constraints = [];

    foreach ($userGroups as $userGroup) {
        $constraints[] = $query->contains('userGroup', $userGroup);
    }

    // Use logicalAnd() instead if all groups must match
    return $query->matching($query->logicalOr($constraints))->execute();
}
票数 1
EN

Stack Overflow用户

发布于 2018-02-13 13:23:09

由于这是TYPO3存储设置的旧方式,您可以使用旧的方法查找关系:通过如下简单的SQL查询来实现:

代码语言:javascript
运行
复制
 SELECT * 
     FROM fe_users 
     WHERE concat(",", usergroups, ",") LIKE "%,3,%"

连接必须有一个适当的字符串来正确地比较和标识该组(在存储与组13相关的查找组3时不出现假阳性)。

票数 1
EN

Stack Overflow用户

发布于 2018-02-14 04:32:37

尝试使用下面的extbase查询。

代码语言:javascript
运行
复制
$users = $this->userRepository->findByUserGroups($this->settings['fachgruppe']);

public function findByUserGroups($userGroups)
{
  $userGroup = explode(',', $userGroups);
  $query = $this->createQuery();
  $query->matching(
      $query->in('usergroup', $userGroup)
  );
  return $query->execute();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48767601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档