2009-08-03 21 views
56

Soy muy nuevo en CodeIgniter y Active Record en particular, sé cómo hacerlo bien en SQL normal pero estoy tratando de aprender.Registro activo de CodeIgniter: obtenga el número de filas devueltas

¿Cómo puedo seleccionar algunos datos de una de mis tablas y luego contar cuántas filas se devuelven utilizando la clase CodeIgniters Active Record?

Gracias, Tom.

Respuesta

107

Tener un vistazo a las funciones de Resultados here:

$this->db->from('yourtable'); 
[... more active record code ...] 
$query = $this->db->get(); 
$rowcount = $query->num_rows(); 
+0

Me estaba golpeando la cabeza durante horas, no podía recordar el nombre de la función ... y tampoco es fácil de encontrar en la documentación oficial. ¡Utilicé 'print_r' en el objeto que resulta del método' get_where' para adivinar el nombre de la función! =) – aL3xa

+0

@Residuum me puede ayudar a resolver esto [query-num-rows-not-returning-correct-number-of-row-when-result-is-not-empty] (https://stackoverflow.com/ questions/45397106/query-num-rows-not-returning-correct-number-of-row-when-result-is-not-empty) –

35

Y, si lo que desea es obtener un recuento de todas las filas de una tabla

$table_row_count = $this->db->count_all('table_name'); 
+0

Muchas gracias. –

8

Sólo consiguió leer el hijo docs !

$query->num_rows(); 
15

Si sólo necesita el número de filas de una consulta y no necesita los datos de la fila actual, utilice count_all_results

echo $this->db 
     ->where('active',1) 
     ->count_all_results('table_name'); 
29

Esto viene a que el modelo:

public function count_news_by_category($cat) 
{ 
    return $this->db 
     ->where('category', $cat) 
     ->where('is_enabled', 1) 
     ->count_all_results('news'); 
} 

Es un ejemplo de mi proyecto actual.

Según benchmarking esta consulta funciona más rápido que si hace lo siguiente:

$this->db->select('*')->from('news')->where(...); 
$q = $this->db->get(); 
return $q->num_rows(); 
2

Esta es también una función muy útil si usted está buscando un filas o datos con donde la condición afectada

function num_rows($table) 
    { 
     return $this->db->affected_rows($table); 
    } 
3

puede hacer esto de dos maneras diferentes:

1. $this->db->query(); //execute the query 
    $query = $this->db->get() // get query result 
    $count = $query->num_rows() //get current query record. 

    2. $this->db->query(); //execute the query 
     $query = $this->db->get() // get query result 
     $count = count($query->results()) 
      or count($query->row_array()) //get current query record. 
2
$this->db->select('count(id) as rows'); 
$this->db->from('table_name'); 
$this->db->where('active',1); 
$query = $this->db->get(); 
foreach($query->result() as $r) 
{ 
    return $r->rows; 
} 
+0

Esto provoca que se emita una consulta 'SELECT' incluyendo una llamada de función' COUNT() 'SQL. La respuesta aceptada se debe tomar en su lugar, ya que evita esto llamando '$ query-> num_rows()' en su lugar. Por ejemplo, 'num_rows()' del controlador mysqli devuelve el resultado de la función PHP 'mysqli_num_rows()' para la última identificación de consulta. Tenga en cuenta: 'No todos los controladores de base de datos tienen una forma nativa de obtener el número total de filas para un conjunto de resultados. Cuando este es el caso, todos los datos se captan previamente y count() se llama manualmente en la matriz resultante para lograr el mismo resultado. (De la documentación). – Roland

+0

CI3: https://www.codeigniter.com/userguide3/database/results.html#result-helper-methods – Roland

0
function getCount(){ 
    return $this->db->get('table_name')->num_rows(); 
} 
Cuestiones relacionadas