1 select.inc public SelectQueryExtender::extend($extender_name)

Enhance this object by wrapping it in an extender object.

The core implementations of QueryExtendableInterface include:

  • TableSort: Extend a query to sort based on query strings.
  • PagerDefault: Extend a query to limit results based on query strings.
  • SearchQuery: Extend a query to join on the search index tables.

Other implementations may be added by other modules, but for the sake of code validation, these core extenders are specified as possible return values of this interface.


$extender_name: The base name of the extending class. The base name will be checked against the current database connection to allow driver-specific subclasses as well, using the same logic as the query objects themselves. For example, PagerDefault_mysql is the MySQL-specific override for PagerDefault.

Return value

QueryExtendableInterface|SelectQueryInterface|TableSort|PagerDefault|SearchQuery: The extender object, which now contains a reference to this object.

Overrides QueryExtendableInterface::extend


core/includes/database/select.inc, line 667


The base extender class for Select queries.


public function extend($extender_name) {
  // The extender can be anywhere so this needs to go to the registry, which
  // is surely loaded by now.
  $class = $this->connection->getDriverClass($extender_name, array(), TRUE);
  return new $class($this, $this->connection);