function SearchQuery::countQuery
Same name in other branches
- 7.x modules/search/search.extender.inc \SearchQuery::countQuery()
- 9 core/modules/search/src/SearchQuery.php \Drupal\search\SearchQuery::countQuery()
- 8.9.x core/modules/search/src/SearchQuery.php \Drupal\search\SearchQuery::countQuery()
- 10 core/modules/search/src/SearchQuery.php \Drupal\search\SearchQuery::countQuery()
Builds the default count query for SearchQuery.
Since SearchQuery always uses GROUP BY, we can default to a subquery. We also add the same conditions as execute() because countQuery() is called first.
Overrides SelectExtender::countQuery
File
-
core/
modules/ search/ src/ SearchQuery.php, line 604
Class
- SearchQuery
- Search query extender and helper functions.
Namespace
Drupal\searchCode
public function countQuery() {
if (!$this->executedPrepare) {
$this->prepareAndNormalize();
}
// Clone the inner query.
$inner = clone $this->query;
// Add conditions to query.
$inner->join('search_dataset', 'd', '[i].[sid] = [d].[sid] AND [i].[type] = [d].[type]');
if (count($this->conditions)) {
$inner->condition($this->conditions);
}
// Remove existing fields and expressions, they are not needed for a count
// query.
$fields =& $inner->getFields();
$fields = [];
$expressions =& $inner->getExpressions();
$expressions = [];
// Add sid as the only field and count them as a subquery.
$count = $this->connection
->select($inner->fields('i', [
'sid',
]), NULL);
// Add the COUNT() expression.
$count->addExpression('COUNT(*)');
return $count;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.