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.