public function QueryTrait::prepare in Drupal 8
Same name and namespace in other branches
- 9 core/modules/workspaces/src/EntityQuery/QueryTrait.php \Drupal\workspaces\EntityQuery\QueryTrait::prepare()
- 10 core/modules/workspaces/src/EntityQuery/QueryTrait.php \Drupal\workspaces\EntityQuery\QueryTrait::prepare()
2 calls to QueryTrait::prepare()
- Query::prepare in core/
modules/ workspaces/ src/ EntityQuery/ Query.php - Prepares the basic query with proper metadata/tags and base fields.
- QueryAggregate::prepare in core/
modules/ workspaces/ src/ EntityQuery/ QueryAggregate.php - Prepares the basic query with proper metadata/tags and base fields.
File
- core/
modules/ workspaces/ src/ EntityQuery/ QueryTrait.php, line 45
Class
- QueryTrait
- Provides workspaces-specific helpers for altering entity queries.
Namespace
Drupal\workspaces\EntityQueryCode
public function prepare() {
parent::prepare();
// Do not alter entity revision queries.
// @todo How about queries for the latest revision? Should we alter them to
// look for the latest workspace-specific revision?
if ($this->allRevisions) {
return $this;
}
// Only alter the query if the active workspace is not the default one and
// the entity type is supported.
if ($this->workspaceManager
->hasActiveWorkspace() && $this->workspaceManager
->isEntityTypeSupported($this->entityType)) {
$active_workspace = $this->workspaceManager
->getActiveWorkspace();
$this->sqlQuery
->addMetaData('active_workspace_id', $active_workspace
->id());
$this->sqlQuery
->addMetaData('simple_query', FALSE);
// LEFT JOIN 'workspace_association' to the base table of the query so we
// can properly include live content along with a possible workspace
// revision.
$id_field = $this->entityType
->getKey('id');
$this->sqlQuery
->leftJoin('workspace_association', 'workspace_association', "%alias.target_entity_type_id = '{$this->entityTypeId}' AND %alias.target_entity_id = base_table.{$id_field} AND %alias.workspace = '{$active_workspace->id()}'");
}
return $this;
}