2012-05-08 34 views
5

Tôi có một truy vấn DQL thích này:thứ tự một DQL Tham gia bởi đếm trên assiociation

$dql = "SELECT p, count(u.id) as ucnt FROM IAA\Entity\Project p " . 
     "JOIN p.likedByUsers u ORDER BY ucnt"; 
$query = $this->_em->createQuery($dql); 

Câu hỏi là, làm thế nào tôi có thể giữ được sắp xếp theo số lượng, nhưng KHÔNG nhận được chúng trong kết quả? Tôi muốn chỉ nhận các dự án được sắp xếp theo số lượng, chứ không phải mảng với [project] và [ucnt].

Trả lời

5

Bắt đầu từ thuyết 2.2 (source):

SELECT a, COUNT(b.id) AS HIDDEN c [...] ORDER BY c 
+0

Tôi sẽ thử nó, như bây giờ giải pháp của tôi là để thêm một truy cập vào các thực thể và sau đó đặt hàng của nó, nhưng HIDDEN trông đẹp hơn nhiều :-) –

+0

Cảm ơn, người đàn ông! Bạn thực sự đã giúp tôi. –

-1

Hãy thử:

$dql = "SELECT p FROM IAA\Entity\Project p " . 
     "JOIN p.likedByUsers u ORDER BY count(u.id)"; 
$query = $this->_em->createQuery($dql); 
+0

Yeah, tôi đã cố gắng, nó mang lại một lỗi: Tin nhắn: [Cú pháp Lỗi] dòng 0, col 72: Lỗi : Dự kiến ​​kết thúc chuỗi, có '(' –

+0

Nhưng trong trường hợp này bạn có thể chọn 2 giá trị và sau đó bỏ qua giá trị đếm trong mã PHP. –

+0

Tôi không thể, beacose nó trả về lỗi cú pháp.Tôi biết tôi có thể sắp xếp lại mảng trong PHP nhưng điều này không có vẻ là một giải pháp thanh lịch, phải có cách để lấy chỉ proe jcts mà không đếm vẫn còn có họ đặt hàng của nó. –

Các vấn đề liên quan