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 and namespace 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.