public function SearchQuery::countQuery in Zircon Profile 8
Same name and namespace in other branches
- 8.0 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 608 - Contains \Drupal\search\SearchQuery.
Class
- SearchQuery
- Performs a query on the full-text search index for a word or words.
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 = array();
$expressions =& $inner
->getExpressions();
$expressions = array();
// Add sid as the only field and count them as a subquery.
$count = db_select($inner
->fields('i', array(
'sid',
)), NULL, array(
'target' => 'replica',
));
// Add the COUNT() expression.
$count
->addExpression('COUNT(*)');
return $count;
}