Doctrine - 按 utf-8 排序排序
Doctrine - Order by utf-8 collation
主题:学说中的排序。
我想订购汽车品牌,当我想订购以 Š、Đ、Ć、Č 或 Ž 等字符开头的品牌时出现问题。例如,当我使用 doctrines orderBy 函数时,我的结果是这样的:
座位
斯柯达
铃木.
请注意,Škoda 的排序就像它以 S 而不是 Š 开头一样。
成功的结果:
我怎样才能根据塞尔维亚拉丁字母表对数据进行排序,所以我得到了这个结果:
座位
铃木
斯柯达
Škoda 会在 Suzuki 之后,因为 Suzuki 是最后一个以 S 开头的,而 Škoda 是第一个以 Š 开头的,而且 Š 在塞尔维亚拉丁字母表中的 S 之后)。
或者,如果这不可能,是否有任何其他解决方案在订购时不会混合数据(Š 不与 S 混合,Ç 不与 C 混合,Ć 不与 C 混合等等)
任何帮助将不胜感激。
尝试更改数据库排序规则。也许试试 utf8_bin
因为在 utf8_general_ci 中 Š 和 S 将相同
您可以在您的实体中使用 options
annotation 更改特定列的排序规则(请参阅文档以获取数据库支持):
class Brand
{
// ...
/**
* @ORM\Column(type="string", length=255, options={"collation":"latin1_general_ci"})
*/
private $name;
}
这将改变您的数据库,因此您必须创建迁移或更新架构。
主题:学说中的排序。
我想订购汽车品牌,当我想订购以 Š、Đ、Ć、Č 或 Ž 等字符开头的品牌时出现问题。例如,当我使用 doctrines orderBy 函数时,我的结果是这样的:
座位
斯柯达
铃木.
请注意,Škoda 的排序就像它以 S 而不是 Š 开头一样。
成功的结果:
我怎样才能根据塞尔维亚拉丁字母表对数据进行排序,所以我得到了这个结果:
座位
铃木
斯柯达
Škoda 会在 Suzuki 之后,因为 Suzuki 是最后一个以 S 开头的,而 Škoda 是第一个以 Š 开头的,而且 Š 在塞尔维亚拉丁字母表中的 S 之后)。
或者,如果这不可能,是否有任何其他解决方案在订购时不会混合数据(Š 不与 S 混合,Ç 不与 C 混合,Ć 不与 C 混合等等)
任何帮助将不胜感激。
尝试更改数据库排序规则。也许试试 utf8_bin 因为在 utf8_general_ci 中 Š 和 S 将相同
您可以在您的实体中使用 options
annotation 更改特定列的排序规则(请参阅文档以获取数据库支持):
class Brand
{
// ...
/**
* @ORM\Column(type="string", length=255, options={"collation":"latin1_general_ci"})
*/
private $name;
}
这将改变您的数据库,因此您必须创建迁移或更新架构。