Jeremy Hicks, cảm ơn vì tiện ích mở rộng của bạn . Tôi không biết cách kết nối chức năng của bạn với học thuyết, nhưng cuối cùng tôi cũng tìm ra câu trả lời.
$doctrineConfig = $this->em->getConfiguration();
$doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');
Tôi cần FIELD chức năng sắp xếp các Đối tượng mà tôi chọn bằng IN biểu hiện. Nhưng bạn chỉ có thể sử dụng chức năng này trong SELECT, WHERE, BETWEEN , không có trong ORDER BY .
Giải pháp:
$qb
->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field")
->from("Entities\Round", "r")
->where($qb->expr()->in("r.id", $ids))
->orderBy("field");
Để tránh thêm trường field bí danh vào hàng kết quả của bạn, bạn cần đặt HIDDEN từ khóa. Vì vậy, đây là cách để có thể sắp xếp các giá trị trong IN biểu thức trong Doctrine 2.2.