protected function Query::prepare in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/lib/Drupal/Core/Entity/Query/Sql/Query.php \Drupal\Core\Entity\Query\Sql\Query::prepare()
Prepares the basic query with proper metadata/tags and base fields.
Return value
\Drupal\Core\Entity\Query\Sql\Query Returns the called object.
Throws
\Drupal\Core\Entity\Query\QueryException Thrown if the base table does not exist.
1 call to Query::prepare()
- QueryAggregate::prepare in core/
lib/ Drupal/ Core/ Entity/ Query/ Sql/ QueryAggregate.php - Prepares the basic query with proper metadata/tags and base fields.
1 method overrides Query::prepare()
- QueryAggregate::prepare in core/
lib/ Drupal/ Core/ Entity/ Query/ Sql/ QueryAggregate.php - Prepares the basic query with proper metadata/tags and base fields.
File
- core/
lib/ Drupal/ Core/ Entity/ Query/ Sql/ Query.php, line 101 - Contains \Drupal\Core\Entity\Query\Sql\Query.
Class
- Query
- The SQL storage entity query class.
Namespace
Drupal\Core\Entity\Query\SqlCode
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;
}