abstract class Query in Drupal 8
Same name in this branch
- 8 core/modules/workspaces/src/EntityQuery/Query.php \Drupal\workspaces\EntityQuery\Query
- 8 core/lib/Drupal/Core/Database/Query/Query.php \Drupal\Core\Database\Query\Query
- 8 core/lib/Drupal/Core/Config/Entity/Query/Query.php \Drupal\Core\Config\Entity\Query\Query
- 8 core/lib/Drupal/Core/Entity/KeyValueStore/Query/Query.php \Drupal\Core\Entity\KeyValueStore\Query\Query
- 8 core/lib/Drupal/Core/Entity/Query/Sql/Query.php \Drupal\Core\Entity\Query\Sql\Query
- 8 core/lib/Drupal/Core/Entity/Query/Null/Query.php \Drupal\Core\Entity\Query\Null\Query
Same name and namespace in other branches
- 9 core/lib/Drupal/Core/Database/Query/Query.php \Drupal\Core\Database\Query\Query
- 10 core/lib/Drupal/Core/Database/Query/Query.php \Drupal\Core\Database\Query\Query
Base class for query builders.
Note that query builders use PHP's magic __toString() method to compile the query object into a prepared statement.
Hierarchy
- class \Drupal\Core\Database\Query\Query implements PlaceholderInterface
Expanded class hierarchy of Query
6 string references to 'Query'
- Error::decodeException in core/
lib/ Drupal/ Core/ Utility/ Error.php - Decodes an exception and retrieves the correct caller.
- PgsqlQueryFactory::get in core/
modules/ workspaces/ src/ EntityQuery/ PgsqlQueryFactory.php - Instantiates an entity query for a given entity type.
- QueryFactory::get in core/
modules/ workspaces/ src/ EntityQuery/ QueryFactory.php - Instantiates an entity query for a given entity type.
- QueryFactory::get in core/
lib/ Drupal/ Core/ Entity/ Query/ Sql/ QueryFactory.php - Instantiates an entity query for a given entity type.
- views.data_types.schema.yml in core/
modules/ views/ config/ schema/ views.data_types.schema.yml - core/modules/views/config/schema/views.data_types.schema.yml
File
- core/
lib/ Drupal/ Core/ Database/ Query/ Query.php, line 14
Namespace
Drupal\Core\Database\QueryView source
abstract class Query implements PlaceholderInterface {
/**
* The connection object on which to run this query.
*
* @var \Drupal\Core\Database\Connection
*/
protected $connection;
/**
* The target of the connection object.
*
* @var string
*/
protected $connectionTarget;
/**
* The key of the connection object.
*
* @var string
*/
protected $connectionKey;
/**
* The query options to pass on to the connection object.
*
* @var array
*/
protected $queryOptions;
/**
* A unique identifier for this query object.
*
* @var string
*/
protected $uniqueIdentifier;
/**
* The placeholder counter.
*
* @var int
*/
protected $nextPlaceholder = 0;
/**
* An array of comments that can be prepended to a query.
*
* @var array
*/
protected $comments = [];
/**
* Constructs a Query object.
*
* @param \Drupal\Core\Database\Connection $connection
* Database connection object.
* @param array $options
* Array of query options.
*/
public function __construct(Connection $connection, $options) {
$this->uniqueIdentifier = uniqid('', TRUE);
$this->connection = $connection;
$this->connectionKey = $this->connection
->getKey();
$this->connectionTarget = $this->connection
->getTarget();
$this->queryOptions = $options;
}
/**
* Implements the magic __sleep function to disconnect from the database.
*/
public function __sleep() {
$keys = get_object_vars($this);
unset($keys['connection']);
return array_keys($keys);
}
/**
* Implements the magic __wakeup function to reconnect to the database.
*/
public function __wakeup() {
$this->connection = Database::getConnection($this->connectionTarget, $this->connectionKey);
}
/**
* Implements the magic __clone function.
*/
public function __clone() {
$this->uniqueIdentifier = uniqid('', TRUE);
}
/**
* Runs the query against the database.
*
* @return \Drupal\Core\Database\StatementInterface|null
* A prepared statement, or NULL if the query is not valid.
*/
protected abstract function execute();
/**
* Implements PHP magic __toString method to convert the query to a string.
*
* The toString operation is how we compile a query object to a prepared
* statement.
*
* @return string
* A prepared statement query string for this object.
*/
public abstract function __toString();
/**
* Returns a unique identifier for this object.
*/
public function uniqueIdentifier() {
return $this->uniqueIdentifier;
}
/**
* Gets the next placeholder value for this query object.
*
* @return int
* The next placeholder value.
*/
public function nextPlaceholder() {
return $this->nextPlaceholder++;
}
/**
* Adds a comment to the query.
*
* By adding a comment to a query, you can more easily find it in your
* query log or the list of active queries on an SQL server. This allows
* for easier debugging and allows you to more easily find where a query
* with a performance problem is being generated.
*
* The comment string will be sanitized to remove * / and other characters
* that may terminate the string early so as to avoid SQL injection attacks.
*
* @param $comment
* The comment string to be inserted into the query.
*
* @return $this
*/
public function comment($comment) {
$this->comments[] = $comment;
return $this;
}
/**
* Returns a reference to the comments array for the query.
*
* Because this method returns by reference, alter hooks may edit the comments
* array directly to make their changes. If just adding comments, however, the
* use of comment() is preferred.
*
* Note that this method must be called by reference as well:
* @code
* $comments =& $query->getComments();
* @endcode
*
* @return array
* A reference to the comments array structure.
*/
public function &getComments() {
return $this->comments;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Query:: |
protected | property | An array of comments that can be prepended to a query. | |
Query:: |
protected | property | The connection object on which to run this query. | |
Query:: |
protected | property | The key of the connection object. | |
Query:: |
protected | property | The target of the connection object. | |
Query:: |
protected | property | The placeholder counter. | |
Query:: |
protected | property | The query options to pass on to the connection object. | |
Query:: |
protected | property | A unique identifier for this query object. | |
Query:: |
public | function | Adds a comment to the query. | |
Query:: |
abstract protected | function | Runs the query against the database. | 8 |
Query:: |
public | function | Returns a reference to the comments array for the query. | |
Query:: |
public | function |
Gets the next placeholder value for this query object. Overrides PlaceholderInterface:: |
|
Query:: |
public | function |
Returns a unique identifier for this object. Overrides PlaceholderInterface:: |
|
Query:: |
public | function | Implements the magic __clone function. | 1 |
Query:: |
public | function | Constructs a Query object. | 7 |
Query:: |
public | function | Implements the magic __sleep function to disconnect from the database. | |
Query:: |
abstract public | function | Implements PHP magic __toString method to convert the query to a string. | 10 |
Query:: |
public | function | Implements the magic __wakeup function to reconnect to the database. |