Tôi đang cố tạo truy vấn để truy xuất các đối tượng từ một cơ sở dữ liệu Doctrine, được sắp xếp theo số lượng thành viên của mối quan hệ một-nhiều cụ thể.Làm thế nào để sắp xếp một truy vấn DTR Doctrine bằng số hoặc thành viên của một mối quan hệ?
Cụ thể hơn: Tôi có hai Thực thể: Con người và Liên kết. Một người có thể là thành viên của một liên đoàn (mối quan hệ của người có liên kết) và liên kết có thể có n người (Liên kết là mối quan hệ 'người').
Tôi muốn tạo một truy vấn DQL sẽ trả về danh sách Liên kết, được sắp xếp theo số lượng người là thành viên của Liên đoàn đó. Một cái gì đó dọc theo các dòng này:
SELECT f FROM AcmeStatsBundle:Federation f ORDER BY [number of members of f.people]
Đó sẽ là bước đầu tiên. Có thêm một bước thứ hai, mà tôi không biết nếu có thể đạt được với một truy vấn duy nhất, mà sẽ được lọc các thành viên của mối quan hệ trước khi đếm. Giống như vậy:
SELECT f FROM AcmeStatsBundle:Federation f ORDER BY [number of (f.people p where p.attr = value)]
Điều thứ hai sẽ là kết quả tối ưu, nhưng thứ hai thỏa mãn nhu cầu của tôi, nếu trường hợp thứ hai không khả thi trong một truy vấn.
Xin cảm ơn trước.
Cảm ơn bạn đã trả lời! Tôi đã phải thực hiện sửa đổi nhỏ cho truy vấn, vì tôi nghĩ rằng bạn không thể ORDER BY một tổng hợp mà không cần chọn nó. Vì vậy, truy vấn cuối cùng là: 'SELECT f, COUNT (p) as qtd FROM AcmeStatsBundle: Liên kết f LEFT JOIN f.people p WHERE p.attr =: some_value GROUP BY f.id ORDER BY qtr' : D –