mysql - Doctrine 2 mysql FIELD函数按顺序排列

标签 mysql field native doctrine-orm

我正在尝试在查询的 order by 子句中使用 MySQL FIELD 函数。我假设 Doctrine 2 不支持开箱即用的 FIELD 函数——是这样吗?如果是这样,我该如何使用它?我是否必须将整个查询转换为 native 查询?是否有添加此功能的 Doctrine 2 扩展?

最佳答案

杰里米·希克斯,感谢 your extension . 我不知道如何将您的功能与教义联系起来,但最终我找到了答案。

$doctrineConfig = $this->em->getConfiguration();
$doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');

我需要 FIELD 函数来订购我通过 IN 表达式选择的实体。但是这个函数只能在SELECT, WHERE, BETWEEN 子句中使用,不能在ORDER BY 中使用。

解决方案:

$qb
            ->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field")
            ->from("Entities\Round", "r")
            ->where($qb->expr()->in("r.id", $ids))
            ->orderBy("field");

为避免在结果行中添加 field 别名,您需要输入 HIDDEN 关键字。所以这如何能够在 Doctrine 2.2 中的 IN 表达式中排序值。

关于mysql - Doctrine 2 mysql FIELD函数按顺序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5957330/

相关文章:

mysql - SQL通过命名不同的表来连接

mysql - 如何将关系数据库用作基于文档的数据库?

c# - 为什么我不应该在我的字段前加上前缀?

dynamic - Qcube/Qcodo 动态输入字段

c# - 在 Xamarin for Android (Visual Studio) 中启用 AOT

mySQL 返回可能重复的随机行

java - Java中的多个爬虫数据库连接

Apache Solr 基于分数和 fieldn 值进行排序

java - 将 Java ArrayList<String> 传递给 JNI C 函数并在 C 中打印列表

android - 像原生相机一样编码我的 android 闪光相机