function QueryBase::initializePager

Same name in other branches
  1. 9 core/lib/Drupal/Core/Entity/Query/QueryBase.php \Drupal\Core\Entity\Query\QueryBase::initializePager()
  2. 10 core/lib/Drupal/Core/Entity/Query/QueryBase.php \Drupal\Core\Entity\Query\QueryBase::initializePager()
  3. 11.x core/lib/Drupal/Core/Entity/Query/QueryBase.php \Drupal\Core\Entity\Query\QueryBase::initializePager()

Gets the total number of results and initialize a pager for the query.

The pager can be disabled by either setting the pager limit to 0, or by setting this query to be a count query.

3 calls to QueryBase::initializePager()
Query::execute in core/lib/Drupal/Core/Config/Entity/Query/Query.php
Execute the query.
Query::execute in core/lib/Drupal/Core/Entity/KeyValueStore/Query/Query.php
Execute the query.
Query::finish in core/lib/Drupal/Core/Entity/Query/Sql/Query.php
Finish the query by adding fields, GROUP BY and range.

File

core/lib/Drupal/Core/Entity/Query/QueryBase.php, line 311

Class

QueryBase
The base entity query class.

Namespace

Drupal\Core\Entity\Query

Code

protected function initializePager() {
    if ($this->pager && !empty($this->pager['limit']) && !$this->count) {
        $page = \Drupal::service('pager.parameters')->findPage($this->pager['element']);
        $count_query = clone $this;
        $this->pager['total'] = $count_query->count()
            ->execute();
        $this->pager['start'] = $page * $this->pager['limit'];
        \Drupal::service('pager.manager')->createPager($this->pager['total'], $this->pager['limit'], $this->pager['element']);
        $this->range($this->pager['start'], $this->pager['limit']);
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.