You are here

public function Query::__toString in Drupal 8

Same name in this branch
  1. 8 core/lib/Drupal/Core/Database/Query/Query.php \Drupal\Core\Database\Query\Query::__toString()
  2. 8 core/lib/Drupal/Core/Entity/Query/Sql/Query.php \Drupal\Core\Entity\Query\Sql\Query::__toString()
Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Entity/Query/Sql/Query.php \Drupal\Core\Entity\Query\Sql\Query::__toString()
  2. 10 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 332

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);
  return strtr($sql, $quoted);
}