Jeremy Hicks, terima kasih atas ekstensi Anda .Saya tidak tahu bagaimana menghubungkan fungsi Anda dengan doktrin, tetapi akhirnya saya menemukan jawabannya.
$doctrineConfig = $this->em->getConfiguration();
$doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');
Saya membutuhkan FIELD berfungsi untuk memesan Entitas saya yang saya pilih dengan IN ekspresi. Tetapi Anda dapat menggunakan fungsi ini hanya di SELECT, WHERE, BETWEEN klausa, bukan dalam ORDER BY .
Solusi:
$qb
->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field")
->from("Entities\Round", "r")
->where($qb->expr()->in("r.id", $ids))
->orderBy("field");
Untuk menghindari penambahan field alias ke baris hasil Anda, Anda perlu memasukkan HIDDEN kata kunci. Jadi begini cara mengurutkan nilai dalam IN ekspresi dalam Doktrin 2.2.