在 Order By 中使用 Doctrine 2 FIELD 函数
Doctrine 2 本身不支持 MySQL FIELD 函数。但是,有一个可用的扩展可以添加此功能。
使用 DoctrineExtension
要使用 Doctrine 2 中的 FIELD 函数,您可以安装 DoctrineExtensions 包。安装后,您需要将以下配置添加到 Doctrine 配置中:
<code class="php">$doctrineConfig = $this->em->getConfiguration(); $doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');</code>
添加此配置后,您可以在 Doctrine 查询中使用 FIELD 函数。
示例
以下示例演示如何使用FIELD函数按一组值对查询进行排序:
<code class="php">$qb = $em->createQueryBuilder(); $qb ->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field") ->from("Entities\Round", "r") ->where($qb->expr()->in("r.id", $ids)) ->orderBy("field");</code>
此查询将返回按FIELD值排序的结果, $ids 数组中的第一个值是 1,第二个值是 2,依此类推。
注意:
FIELD 函数只能是用于 SELECT、WHERE 和 BETWEEN 子句。它不能用在 ORDER BY 子句中。为了解决此限制,上面的示例使用隐藏字段来存储 FIELD 值。
以上是如何将 MySQL FIELD 函数与 Doctrine 2 一起使用?的详细内容。更多信息请关注PHP中文网其他相关文章!