我試圖創建一個查詢從一個Doctrine數據庫檢索對象,按特定的一對多關係的成員數量排序。如何根據關係的數量或成員對Doctrine DQL Query進行排序?
更具體地說:我有兩個實體:人員和聯邦。一個人可以是一個聯合會的成員(人有'聯合'關係),聯合會可能有個人(聯邦爲'人'關係)。
我想創建一個DQL查詢,它將返回聯盟列表,由有多少人是該聯盟的成員排序。沿着這些線:
SELECT f FROM AcmeStatsBundle:Federation f ORDER BY [number of members of f.people]
這將是第一步。還有一個額外的第二步,我不知道是否可以用單個查詢來實現,這將在計數之前過濾關係的成員。像這樣:
SELECT f FROM AcmeStatsBundle:Federation f ORDER BY [number of (f.people p where p.attr = value)]
這第二個將是最佳結果,但第一個滿足我的需求,如果第二種情況是不是在單個查詢可行性的。
在此先感謝。
感謝您的回答!我不得不對查詢做些微的修改,因爲我認爲如果不選擇它,你不能對ORDER BY進行排序。所以最後的查詢是這樣的: 'SELECT f,COUNT(p)as qtd FROM AcmeStatsBundle:Federation f LEFT JOIN f.people p WHERE p.attr =:some_value GROUP BY f.id ORDER BY qtr' :D –