在 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中文網其他相關文章!