function Query::__toString

Same name in this branch
  1. 10 core/lib/Drupal/Core/Database/Query/Query.php \Drupal\Core\Database\Query\Query::__toString()
Same name in other branches
  1. 7.x includes/database/query.inc \Query::__toString()
  2. 9 core/lib/Drupal/Core/Database/Query/Query.php \Drupal\Core\Database\Query\Query::__toString()
  3. 9 core/lib/Drupal/Core/Entity/Query/Sql/Query.php \Drupal\Core\Entity\Query\Sql\Query::__toString()
  4. 8.9.x core/lib/Drupal/Core/Database/Query/Query.php \Drupal\Core\Database\Query\Query::__toString()
  5. 8.9.x core/lib/Drupal/Core/Entity/Query/Sql/Query.php \Drupal\Core\Entity\Query\Sql\Query::__toString()
  6. 11.x core/lib/Drupal/Core/Database/Query/Query.php \Drupal\Core\Database\Query\Query::__toString()
  7. 11.x core/lib/Drupal/Core/Entity/Query/Sql/Query.php \Drupal\Core\Entity\Query\Sql\Query::__toString()

Implements the magic __toString method.

File

core/lib/Drupal/Core/Entity/Query/Sql/Query.php, line 337

Class

Query
The SQL storage entity query class.

Namespace

Drupal\Core\Entity\Query\Sql

Code

public function __toString() {
    // Clone the query so the prepare and compile doesn't get repeated.
    $clone = clone $this;
    $clone->prepare()
        ->compile()
        ->addSort()
        ->finish();
    // Quote arguments so query is able to be run.
    $quoted = [];
    foreach ($clone->sqlQuery
        ->getArguments() as $key => $value) {
        $quoted[$key] = is_null($value) ? 'NULL' : $this->connection
            ->quote($value);
    }
    // Replace table name brackets.
    $sql = $clone->connection
        ->prefixTables((string) $clone->sqlQuery);
    $sql = $clone->connection
        ->quoteIdentifiers($sql);
    return strtr($sql, $quoted);
}

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