如何让PagerDefault查询与Drupal 7一起正常工作?

时间:2011-10-03 15:42:16

标签: php drupal 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();

但是寻呼机不起作用:返回查询中的每个项目,就像完全忽略对PagerDefault的调用一样。我在输出中向下输出主题('pager'),这不是问题。

这不是我失败的唯一例子,在其他几个项目中,类似的查询每次都会带回全部结果。

我已经阅读了所有文档,它似乎有时工作,而不是其他时间。有人有任何想法吗?

干杯

2 个答案:

答案 0 :(得分:18)

当您致电extend()时,与无关。

唯一重要的是你使用extend()返回的新对象。原因是extend()创建了一个新对象,它覆盖了当前对象(装饰器模式)。

因此,您需要使用$query = $query->extend('PagerDefault'),就像您在答案中所做的那样(与其他来电相结合)。

答案 1 :(得分:7)

它不起作用,因为你必须这样做

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