Sono abbastanza sicuro che DQL sarà la strada da percorrere, ma mi chiedo se Doctrine, sto usando Doctrine 2, debba in qualche modo restituire il conteggio delle righe. Non userò le righe stesse, voglio solo il conteggio.È meglio usare DQL per ottenere il conteggio delle colonne o ottenere la raccolta, quindi contare?
Q
È meglio usare DQL per ottenere il conteggio delle colonne o ottenere la raccolta, quindi contare?
15
A
risposta
30
Sono nuovo di Doctrine2, ma sembra che si può semplicemente fare questo:
$query = $em->createQuery('SELECT COUNT(u.id) FROM Entities\User u');
$count = $query->getSingleScalarResult();
Fonte (Utilizzo delle funzioni Agregate): http://www.doctrine-project.org/docs/orm/2.0/en/reference/dql-doctrine-query-language.html#dql-select-examples
ammessi funzioni di aggregazione: http://www.doctrine-project.org/docs/orm/2.0/en/reference/dql-doctrine-query-language.html#aggregate-functions
0
Ecco un altro punto di vista interessante sull'utilizzo di funzioni aggregate in DQL
http://doctrine-orm.readthedocs.org/en/latest/cookbook/aggregate-fields.html
Forse si eviterebbe la creazione di una query specifica per ottenere un valore aggregato. In questo caso, i campi aggregati sono una buona alternativa.
La sintassi che ha funzionato per me era '$ em-> createQuery ('SELECT COUNT (u.id) FROM MyBundle: User u');'. A proposito, in Rails, questa stessa cosa può essere fatta con 'User.count'. In Django, 'User.objects.count'. –
@JasonSwett hai usato alias definiti per te dal framework Symfony. Non funzionerà al di fuori di Symfony, a meno che tu non definisca alias tu stesso –