Tôi khá chắc chắn rằng DQL sẽ là con đường để đi, nhưng tôi tự hỏi nếu Doctrine, tôi đang sử dụng Doctrine 2, đã someway để trả về số hàng. Tôi sẽ không sử dụng chính các hàng, tôi chỉ muốn đếm.Tốt hơn để sử dụng DQL để nhận số đếm cột hoặc nhận bộ sưu tập, hãy đếm?
15
A
Trả lời
30
Tôi mới đến Doctrine2 nhưng có vẻ như bạn chỉ có thể làm điều này:
$query = $em->createQuery('SELECT COUNT(u.id) FROM Entities\User u');
$count = $query->getSingleScalarResult();
Nguồn (Sử dụng chức năng Agregate): http://www.doctrine-project.org/docs/orm/2.0/en/reference/dql-doctrine-query-language.html#dql-select-examples
phép chức năng tổng hợp: http://www.doctrine-project.org/docs/orm/2.0/en/reference/dql-doctrine-query-language.html#aggregate-functions
0
Đây là một quan điểm thú vị khác về việc sử dụng các hàm tổng hợp trong DQL
http://doctrine-orm.readthedocs.org/en/latest/cookbook/aggregate-fields.html
Có thể bạn sẽ tránh việc tạo truy vấn cụ thể để có được giá trị tổng hợp. Trong trường hợp này, các trường tổng hợp là một lựa chọn tốt.
Cú pháp làm việc cho tôi là '$ em-> createQuery ('SELECT COUNT (u.id) FROM MyBundle: User u');'. Nhân tiện, trong Rails, điều tương tự này có thể được thực hiện với 'User.count'. Trong Django, 'User.objects.count'. –
@JasonSwett bạn đã sử dụng các bí danh được bạn định nghĩa bởi khung công tác Symfony. Nó sẽ không hoạt động bên ngoài Symfony, trừ khi bạn tự định nghĩa các bí danh –