如何在学说中使用PostgreSQL整理修饰符



我在项目中使用学说和PostgreSQL数据库,我想使其可翻译。问题是我想对一些与所选语言习俗有关的字符串正确分类。

例如。用捷克语语言,在Aplhabet中的字母" H"之后有字母" CH",因此我想在排序列表中看到" class"," horn"," horn","和弦";但是用英语我想获得"和弦"," class"," horn"。

在Postgres中,我可以在翻译表中创建部分索引,然后使用以下内容:

SELECT *
FROM "entity_translation"
WHERE "lang" = 1
ORDER BY "name" collate "en_US"

但是我无法(〜我不知道该怎么做)在学说/dbal中使用此语法。

您是否为我的用例使用类似的解决方案?

我通过为学说编写自己的自定义DQL函数来解决此问题。如下所示,使用教义内部DQL查询(SYMFONY2)中所示。

本学说的博客文章提供了有关如何注册新书面功能的详细信息。简短版本看起来像

 $config = Setup::createAnnotationMetadataConfiguration($folderConfig, $devMode);
 $config->addCustomStringFunction('collate', Collate::class);
 $this->_entityManager = EntityManager::create($dbParams, $config);

查询看起来像(未经测试的代码)

$query = $queryBuilder->select('t.*')
            ->from(Translation::class, 't') 
              [...]         
            ->orderBy('collate(t.translatedText, en_US)')

确保OS或容器安装了正确的位置。

相关内容

  • 没有找到相关文章