Rumah > pangkalan data > tutorial mysql > Bagaimanakah saya boleh menggunakan fungsi MySQL FIELD dengan klausa ORDER BY Doctrine 2?

Bagaimanakah saya boleh menggunakan fungsi MySQL FIELD dengan klausa ORDER BY Doctrine 2?

Susan Sarandon
Lepaskan: 2024-10-28 20:11:30
asal
332 orang telah melayarinya

How can I use the MySQL FIELD function with Doctrine 2's ORDER BY clause?

Doktrin 2 MySQL FIELD Berfungsi Mengikut Susunan Oleh

Apabila cuba menggunakan fungsi SQL FIELD dalam susunan mengikut klausa pertanyaan Doktrin 2 , seseorang mungkin menghadapi batasan kerana kekurangan sokongan yang wujud untuk fungsi ini.

Adakah Terdapat Sambungan Doktrin 2 untuk FIELD?

Nasib baik, terdapat Doktrin 2 sambungan yang dibangunkan oleh Jeremy Hicks yang menambah fungsi FIELD. Untuk menyepadukan sambungan ini, ikut langkah di bawah:

  1. Pasang sambungan menggunakan Komposer:

    composer require doctrine-extensions/doctrine-extensions
    Salin selepas log masuk
  2. Tambah sambungan pada konfigurasi Doktrin :

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

Had: Susunan MEDAN Mengikut Sekatan Klausa

Walaupun mendayakan kefungsian FIELD melalui sambungan, masih terdapat pengehadan dalam Doktrin 2 . Fungsi FIELD tidak boleh digunakan secara langsung dalam susunan mengikut klausa.

Penyelesaian: Menggunakan Alias ​​TERSEMBUNYI

Untuk memintas sekatan ini, anda boleh menggunakan alias medan TERSEMBUNYI dalam pertanyaan anda:

<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>
Salin selepas log masuk

Penjelasan:

  • Kata kunci TERSEMBUNYI menghalang alias medan daripada muncul dalam baris hasil.
  • Dengan mengisih pada medan TERSEMBUNYI, anda dengan berkesan mengisih mengikut nilai yang dikembalikan oleh fungsi FIELD.

Penyelesaian ini membolehkan anda memesan nilai dalam ungkapan IN dalam Doktrin 2.2, walaupun dengan pengehadan yang dikenakan pada fungsi FIELD dalam susunan mengikut klausa.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan fungsi MySQL FIELD dengan klausa ORDER BY Doctrine 2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan