Rumah  >  Artikel  >  pangkalan data  >  Bagaimana Memesan Keputusan Menggunakan Fungsi FIELD MySQL dalam Doktrin 2?

Bagaimana Memesan Keputusan Menggunakan Fungsi FIELD MySQL dalam Doktrin 2?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 00:07:02863semak imbas

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

Pemesanan mengikut Fungsi MySQL FIELD dalam Doktrin 2

Doktrin 2 tidak menyokong fungsi MySQL FIELD secara asli di luar kotak. Untuk menggunakannya, anda boleh memanfaatkan fungsi rentetan tersuai yang disediakan oleh sambungan.

Penyelesaian DoctrineExtensions:

Pustaka DoctrineExtensions termasuk fungsi rentetan tersuai bernama 'FIELD' yang meniru Fungsi MySQL FIELD. Untuk melaksanakan ini, tambahkan konfigurasi berikut:

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

Penggunaan:

Fungsi FIELD boleh digunakan dalam klausa SELECT, WHERE dan BETWEEN. Walaupun ia tidak boleh digunakan secara langsung dalam ORDER BY, penyelesaian melibatkan penambahan medan tambahan dalam klausa SELECT dan susunan mengikut medan itu sebaliknya:

<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>

Dengan menyatakan HIDDEN dalam klausa SELECT, anda boleh mengelakkan daripada mempunyai medan tambahan muncul dalam baris hasil. Ini membolehkan anda memesan nilai dengan cekap dalam ungkapan IN menggunakan Doktrin 2.2.

Atas ialah kandungan terperinci Bagaimana Memesan Keputusan Menggunakan Fungsi FIELD MySQL dalam Doktrin 2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn