2012-03-30 16 views
9

me gustaría saber cómo puedo contar todos los registros de una entidad en un repositorio doctrinaregistros de conteo Doctrina de la tabla

me encontré con esta solución, pero no estoy seguro si esto es bueno, así:

public function findAllCounted() 
{ 
    return $this->getEntityManager() 
     ->createQuery('SELECT COUNT(a.id) FROM KSRArticleBundle:Article a') 
     ->getSingleScalarResult(); 
} 

Best Regards, Bodo

Respuesta

11

no es necesario contar con un campo específico, por lo que este va a hacer:

+0

Muchas gracias :) – bodokaiser

5

Sólo para que conste, por lo general es mejor contar con el id:

SELECT COUNT(a.id) FROM KSRArticleBundle:Article a 

es un poco mejor

+0

¿Por qué es mejor? – Chausser

+2

Debido a que MySql no tiene que enumerar toda la información en las líneas, simplemente cuenta los identificadores. Es mejor en MyISAM, no sé si aún se mantiene en InnoDB. –

+0

+1 para contar el .id - @ Chausser Debido a que el ID está indexado, la consulta solo cuenta el índice en lugar de todas las filas de datos ... – Prof83

0

SQL también permite esto:

SELECT COUNT(1) FROM KSRArticleBundle:Article a 

De este modo, la base de datos hace ni siquiera tiene que buscar datos de la tabla, que es aún más rápido. Literalmente, lo que dice: selecciona el número de la constante "1" para cada registro. Aumento de velocidad pequeña para servidores de bases de datos bien diseñados y no debe recordar nada sobre la tabla al escribir esto.

Cuestiones relacionadas