2011-10-03 6 views
7

sto correndo il seguente codice:Come posso far funzionare correttamente le query di PagerDefault 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(); 

ma il cercapersone non funziona: ogni elemento dalla query viene restituito, come se la chiamata a PagerDefault viene completamente ignorata. Sto emettendo ulteriormente il tema ("cercapersone") nell'output, quindi non è questo il problema.

Questo non è l'unico esempio di questo errore che ho, in molti altri progetti query simili riportano anche il numero completo di risultati ogni volta.

Ho letto tutta la documentazione, sembra che funzioni a volte e non altre volte. Qualcuno ha qualche idea?

Acclamazioni

risposta

18

non è rilevante quando si chiama extend().

L'unica cosa importante è che si utilizza il nuovo oggetto restituito da extend(). La ragione di ciò è che extend() crea un nuovo oggetto che avvolge l'oggetto corrente (pattern Decorator).

Quindi, è necessario utilizzare $query = $query->extend('PagerDefault'), come si fa nella risposta (in combinazione con altre chiamate).

7

Non funziona perché si deve fare

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

che è stato! Grazie! –

+0

Questo mi ha davvero aiutato !! : D – DarkteK

Problemi correlati