protected Query::prepare()
Prepares the basic query with proper metadata/tags and base fields.
\Drupal\Core\Entity\Query\Sql\Query Returns the called object.
\Drupal\Core\Entity\Query\QueryException Thrown if the base table does not exist.
protected function prepare() { if ($this->allRevisions) { if (!$base_table = $this->entityType->getRevisionTable()) { throw new QueryException("No revision table for " . $this->entityTypeId . ", invalid query."); } } else { if (!$base_table = $this->entityType->getBaseTable()) { throw new QueryException("No base table for " . $this->entityTypeId . ", invalid query."); } } $simple_query = TRUE; if ($this->entityType->getDataTable()) { $simple_query = FALSE; } $this->sqlQuery = $this->connection->select($base_table, 'base_table', array('conjunction' => $this->conjunction)); $this->sqlQuery->addMetaData('entity_type', $this->entityTypeId); $id_field = $this->entityType->getKey('id'); // Add the key field for fetchAllKeyed(). if (!$revision_field = $this->entityType->getKey('revision')) { // When there is no revision support, the key field is the entity key. $this->sqlFields["base_table.$id_field"] = array('base_table', $id_field); // Now add the value column for fetchAllKeyed(). This is always the // entity id. $this->sqlFields["base_table.$id_field" . '_1'] = array('base_table', $id_field); } else { // When there is revision support, the key field is the revision key. $this->sqlFields["base_table.$revision_field"] = array('base_table', $revision_field); // Now add the value column for fetchAllKeyed(). This is always the // entity id. $this->sqlFields["base_table.$id_field"] = array('base_table', $id_field); } if ($this->accessCheck) { $this->sqlQuery->addTag($this->entityTypeId . '_access'); } $this->sqlQuery->addTag('entity_query'); $this->sqlQuery->addTag('entity_query_' . $this->entityTypeId); // Add further tags added. if (isset($this->alterTags)) { foreach ($this->alterTags as $tag => $value) { $this->sqlQuery->addTag($tag); } } // Add further metadata added. if (isset($this->alterMetaData)) { foreach ($this->alterMetaData as $key => $value) { $this->sqlQuery->addMetaData($key, $value); } } // This now contains first the table containing entity properties and // last the entity base table. They might be the same. $this->sqlQuery->addMetaData('all_revisions', $this->allRevisions); $this->sqlQuery->addMetaData('simple_query', $simple_query); return $this; }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Entity!Query!Sql!Query.php/function/Query::prepare/8.1.x