#php #drupal #drupal-7
#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 полностью игнорируется. Я вывожу тему («пейджер») дальше в выводе, так что это не проблема.
Это не единственный пример этой ошибки, который у меня есть, в нескольких других проектах подобные запросы также каждый раз возвращают полное количество результатов.
Я прочитал всю документацию, кажется, иногда это работает, а в других случаях нет. У кого-нибудь есть идеи?
Приветствия
Ответ №1:
Это не имеет значения , когда вы звоните extend()
.
Единственное, что важно, это то, что вы используете новый объект, возвращаемый extend()
. Причина этого в том, что extend()
создается новый объект, который обертывает текущий объект (шаблон декоратора).
Итак, вам нужно использовать $query = $query->extend('PagerDefault')
, как вы делаете в своем ответе (в сочетании с другими вызовами).
Ответ №2:
Это не работает, потому что вам нужно сделать
$query = $query->extend('PagerDefault')->limit(2);