首頁  >  文章  >  資料庫  >  如何使用 Doctrine 2 中的 MySQL 的 FIELD 函數對結果進行排序?

如何使用 Doctrine 2 中的 MySQL 的 FIELD 函數對結果進行排序?

Linda Hamilton
Linda Hamilton原創
2024-10-30 00:07:02863瀏覽

How to Order Results Using MySQL's FIELD Function in Doctrine 2?

在 Doctrine 2 中透過 MySQL FIELD 函數排序

Doctrine 2 本身不支援開箱即用的 MySQL FIELD 函數。要利用它,您可以利用擴充功能提供的自訂字串函數。

DoctrineExtensions 解決方案:

DoctrineExtensions 函式庫包含一個名為「FIELD」的自訂字串函數,該函數模擬MySQL 欄位函數。若要實現此功能,請新增以下配置:

<code class="php">$doctrineConfig = $this->em->getConfiguration();
$doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');</code>

用法:

FIELD 函數可以在 SELECT、WHERE 和 BETWEEN 子句中使用。雖然它不能直接在ORDER BY 中使用,但解決方法是在SELECT 子句中新增一個附加欄位並按該欄位排序:

<code class="php">$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>

透過在SELECT 子句中指定HIDDEN,您可以避免出現附加欄位出現在結果行中。這允許您使用 Doctrine 2.2 在 IN 表達式中有效地對值進行排序。

以上是如何使用 Doctrine 2 中的 MySQL 的 FIELD 函數對結果進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn