class Query

Same name in this branch
  1. 11.x core/modules/workspaces/src/EntityQuery/Query.php \Drupal\workspaces\EntityQuery\Query
  2. 11.x core/lib/Drupal/Core/Config/Entity/Query/Query.php \Drupal\Core\Config\Entity\Query\Query
  3. 11.x core/lib/Drupal/Core/Entity/Query/Sql/Query.php \Drupal\Core\Entity\Query\Sql\Query
  4. 11.x core/lib/Drupal/Core/Entity/Query/Null/Query.php \Drupal\Core\Entity\Query\Null\Query
  5. 11.x core/lib/Drupal/Core/Entity/KeyValueStore/Query/Query.php \Drupal\Core\Entity\KeyValueStore\Query\Query
Same name in other branches
  1. 7.x includes/database/query.inc \Query
  2. 9 core/modules/workspaces/src/EntityQuery/Query.php \Drupal\workspaces\EntityQuery\Query
  3. 9 core/lib/Drupal/Core/Config/Entity/Query/Query.php \Drupal\Core\Config\Entity\Query\Query
  4. 9 core/lib/Drupal/Core/Database/Query/Query.php \Drupal\Core\Database\Query\Query
  5. 9 core/lib/Drupal/Core/Entity/Query/Sql/Query.php \Drupal\Core\Entity\Query\Sql\Query
  6. 9 core/lib/Drupal/Core/Entity/Query/Null/Query.php \Drupal\Core\Entity\Query\Null\Query
  7. 9 core/lib/Drupal/Core/Entity/KeyValueStore/Query/Query.php \Drupal\Core\Entity\KeyValueStore\Query\Query
  8. 8.9.x core/modules/workspaces/src/EntityQuery/Query.php \Drupal\workspaces\EntityQuery\Query
  9. 8.9.x core/lib/Drupal/Core/Config/Entity/Query/Query.php \Drupal\Core\Config\Entity\Query\Query
  10. 8.9.x core/lib/Drupal/Core/Database/Query/Query.php \Drupal\Core\Database\Query\Query
  11. 8.9.x core/lib/Drupal/Core/Entity/Query/Sql/Query.php \Drupal\Core\Entity\Query\Sql\Query
  12. 8.9.x core/lib/Drupal/Core/Entity/Query/Null/Query.php \Drupal\Core\Entity\Query\Null\Query
  13. 8.9.x core/lib/Drupal/Core/Entity/KeyValueStore/Query/Query.php \Drupal\Core\Entity\KeyValueStore\Query\Query
  14. 10 core/modules/workspaces/src/EntityQuery/Query.php \Drupal\workspaces\EntityQuery\Query
  15. 10 core/lib/Drupal/Core/Config/Entity/Query/Query.php \Drupal\Core\Config\Entity\Query\Query
  16. 10 core/lib/Drupal/Core/Database/Query/Query.php \Drupal\Core\Database\Query\Query
  17. 10 core/lib/Drupal/Core/Entity/Query/Sql/Query.php \Drupal\Core\Entity\Query\Sql\Query
  18. 10 core/lib/Drupal/Core/Entity/Query/Null/Query.php \Drupal\Core\Entity\Query\Null\Query
  19. 10 core/lib/Drupal/Core/Entity/KeyValueStore/Query/Query.php \Drupal\Core\Entity\KeyValueStore\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

Expanded class hierarchy of Query

93 string references to 'Query'
AjaxFormCacheTest::testQueryString in core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxFormCacheTest.php
Tests AJAX forms on pages with a query string.
BasicTest::testWizardDefaultValues in core/modules/views/tests/src/Functional/Wizard/BasicTest.php
Tests default plugin values are populated from the wizard form.
batch_process in core/includes/form.inc
Processes the batch.
BlockContentTest::getExpectedDocument in core/modules/jsonapi/tests/src/Functional/BlockContentTest.php
CachePluginBase::cacheGet in core/modules/views/src/Plugin/views/cache/CachePluginBase.php
Retrieve data from the cache.

... See full list

File

core/lib/Drupal/Core/Database/Query/Query.php, line 14

Namespace

Drupal\Core\Database\Query
View 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() : array {
        $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() : void {
        $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.
     *
     * @throws \BadMethodCallException
     *   Thrown when the operation is a Merge or the operation is not implemented,
     *   as in test.
     */
    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;
    }
    
    /**
     * Gets the database connection to be used for the query.
     *
     * @return \Drupal\Core\Database\Connection
     *   The database connection to be used for the query.
     */
    public function getConnection() {
        return $this->connection;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
Query::$comments protected property An array of comments that can be prepended to a query.
Query::$connection protected property The connection object on which to run this query.
Query::$connectionKey protected property The key of the connection object.
Query::$connectionTarget protected property The target of the connection object.
Query::$nextPlaceholder protected property The placeholder counter.
Query::$queryOptions protected property The query options to pass on to the connection object.
Query::$uniqueIdentifier protected property A unique identifier for this query object.
Query::comment public function Adds a comment to the query.
Query::execute abstract protected function Runs the query against the database. 7
Query::getComments public function Returns a reference to the comments array for the query.
Query::getConnection public function Gets the database connection to be used for the query.
Query::nextPlaceholder public function Gets the next placeholder value for this query object. Overrides PlaceholderInterface::nextPlaceholder
Query::uniqueIdentifier public function Returns a unique identifier for this object. Overrides PlaceholderInterface::uniqueIdentifier
Query::__clone public function Implements the magic __clone function. 1
Query::__construct public function Constructs a Query object. 7
Query::__sleep public function Implements the magic __sleep function to disconnect from the database.
Query::__toString abstract public function Implements PHP magic __toString method to convert the query to a string. 11
Query::__wakeup public function Implements the magic __wakeup function to reconnect to the database.

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