Orocrm 数据网格过滤器不适用于聚合字段列

问题描述

我有一个带有聚合字段的子查询查询:

$qRoles = $this->getEntityManager()
    ->createQueryBuilder()
    ->addSelect('group_concat(r.label)')
    ->from(UserAccessRole::class,'uar')
    ->leftJoin(Role::class,'r','WITH','uar.role = r.id')
    ->where('uar.userId = a.id')
    ->addGroupBy('uar.userId');

    $qb = $this->getEntityManager()
        ->createQueryBuilder()
        ->from(Account::class,'a')
        ->addSelect('a.name')
        ->addSelect('(' . $qRoles->getDql() . ') as roles');

    return $qb;

还有一个像 yaml:

    accounts-datagrid:
    source:
        skip_acl_apply: true
        query_builder: '@mybundle.acl.repository->getVisibleAccounts()'
    columns:
        name:
            label: name
        roles:
            label: Ruoli
            frontend_type: string
    filters:
        columns:
            name:
                type: string
                data_name: a.name
            roles:
                type: string
                data_name: roles
                filter_by_having: false
    sorters:
        columns:
            name:
                data_name: a.name
            roles:
                data_name: roles

我获得了这样的数据网格:

NAME       ROLES
admin      Seller,Buyer,Administrator
pippo      Seller
pluto      Buyer
...        ...

当我为 ROLES 列 Es 插入过滤字符串时:'Seller'

我有一个内部 500 错误

[语法错误] 第 0 行,第 407 列:错误:预期 =、、>、>=、!=,得到 'LIKE' 500 内部服务器错误 - QueryException 1个链接异常: 查询异常 »

[2/2] QueryException: [Syntax Error] line 0,col 407: Error: Expected =,>,>=,!=,got 'LIKE'

[1/2] QueryException: SELECT a.id FROM mybundle...\Account a INNER JOIN a.user u WHERE (SELECT group_concat(r.label) FROM mybundle...\UserAccessRole uar LEFT JOIN mybundle.. .\Role r WITH uar.role = r.id WHERE uar.userId = a.id GROUP BY uar.userId) LIKE :roles1085237485

为什么这种字段会出现错误? 如果我过滤其他字段,一切正常。

请帮助我,这让我发疯。 谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)