2011-02-03 19 views
8

estoy haciendo algunas querys db usando ActiveRecord y necesito de paginar los resultados por lo que unCodeIgniter límite de consulta de base de datos

$this->db->limit($pPagination['Start'], $pPagination['Length']); 

pero no consigo ningún resultado. Usando $this->db->last_query(); parece que CodeIgniter produce el siguiente código SQL

SELECT * 
FROM (`viw_contacts`) 
WHERE `user_id` = '1' 
ORDER BY `contact_name` asc 
LIMIT 0 OFFSET 15 

que, cuando lo funciono dentro de phpMyAdmin también devuelve 0 filas.

Pero si se modifico una carrera:

SELECT * 
FROM (`viw_contacts`) 
WHERE `user_id` = '1' 
ORDER BY `contact_name` asc 
LIMIT 0, 15 

entonces consigo los resultados correctos. ¿Alguna idea de por qué CodeIgniter genera este SQL y por qué no funciona?

Yo uso CodeIgniter 1.7.3 y MySQL 5.1.41

Respuesta

20

Ok, encontraron el problema.

Es

$this->db->limit($pPagination['Length'], $pPagination['Start']); 

en lugar de

$this->db->limit($pPagination['Start'], $pPagination['Length']); 

primer parámetro es la longitud y el segundo es el desplazamiento, no al revés como pensé.

Cuestiones relacionadas