2011-10-03 15 views
7

estoy ejecutando el siguiente código:¿Cómo obtengo que las consultas de PagerDefault funcionen correctamente con Drupal 7?

$query = db_select('taxonomy_index', 'ti') 
    ->fields('ti', array('nid')) 
    ->condition('ti.tid', $term->tid) 
    ->condition('n.status', 1); 

$query->join('node', 'n', 'n.nid = ti.nid'); 

$query->extend('PagerDefault')->limit(2); 

$nids = $query->execute()->fetchCol(); 

pero el localizador no funciona: cada elemento de la consulta se volvió, como si la llamada a PagerDefault se ignora por completo. Estoy emitiendo el tema ('pager') más abajo en la salida, así que ese no es el problema.

Este no es el único ejemplo de esta falla que tengo, en muchos otros proyectos las consultas similares también devuelven el número completo de resultados cada vez.

He leído toda la documentación, parece que funciona a veces y no en otras ocasiones. ¿Alguien tiene alguna idea?

Saludos

Respuesta

18

no es relevante cuando se llama extend().

Lo único que es importante es que utilice el nuevo objeto devuelto por extend(). La razón para esto es que extend() crea un nuevo objeto que envuelve el objeto actual (patrón decorador).

Por lo tanto, necesita usar $query = $query->extend('PagerDefault'), como lo hace en su respuesta (combinada con otras llamadas).

7

No está funcionando debido a que tiene que hacer

$query = $query->extend('PagerDefault')->limit(2); 
+0

Eso fue todo! ¡Gracias! –

+0

¡Esto realmente me ayudó! :RE – DarkteK

Cuestiones relacionadas