如何使用 Doctrine 和 Oracle 对包含重音的字符串进行排序

问题描述

我正在尝试按字母顺序对用其本国语言书写的组织名称进行排序,这意味着它们可能包含重音或特定于语言的字符。

我用 Oracle 的普通 sql 找到了解决方

select org_name
from organisations
order by org_name COLLATE GENERIC_M;

它准确地返回我想要的内容并按我想要的方式排序。

现在尝试使用 Oracle 对具有相同架构的 Doctrine 执行相同操作时遇到了麻烦。

当我使用查询构建器时,我不能只在查询中指定“COLLATE GENERIC_M”部分。

在查看了学说文档后,我在我的实体中尝试了这样的 'options' 属性注释

/**
     * @ORM\Column(type="string",length=255,name="org_name",options={"collation":"GENERIC_M"})
     */
    private $name;

这显然不起作用,因为 Doctrine 不支持 Oracle 供应商的此属性

我也尝试在我的学说配置中这样指定:

 driver:       'oci8'
        service:      true
        user:         '%env(DATABASE_USER)%'
        password:     '%env(DATABASE_PASS)%'
        options:
                1002: "SET NAMES 'UTF8' COLLATE 'GENERIC_M'" 

但没有变化(当然是在清除缓存之后)。

我想避免在架构级别更改设置,因为它是一个已经上线的项目,我不想引入副作用。 我还想避免在这个简单的查询中使用普通的 sql,因为我使用了学说分页

还有其他方法可以实现我的主要目标吗?

先谢谢你

解决方法

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

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

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