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:
Pasang sambungan menggunakan Komposer:
composer require doctrine-extensions/doctrine-extensions
Tambah sambungan pada konfigurasi Doktrin :
<code class="php">$doctrineConfig = $em->getConfiguration(); $doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');</code>
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>
Penjelasan:
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!