class QueryAggregate extends Query implements QueryAggregateInterface (View source)

The SQL storage entity query aggregate class.

Properties

protected string $entityTypeId

The entity type this query runs against.

from  QueryBase
protected EntityTypeInterface $entityType

Information about the entity type.

from  QueryBase
protected array $sort

The list of sorts.

from  QueryBase
protected bool $count

TRUE if this is a count query, FALSE if it isn't.

from  QueryBase
protected ConditionInterface $condition Conditions. from  QueryBase
protected array $aggregate

The list of aggregate expressions.

from  QueryBase
protected array $groupBy

The list of columns to group on.

from  QueryBase
protected ConditionAggregateInterface $conditionAggregate

Aggregate Conditions.

from  QueryBase
protected array $sortAggregate

The list of sorts over the aggregate results.

from  QueryBase
protected array $range

The query range.

from  QueryBase
protected array $alterMetaData

The query metadata for alter purposes.

from  QueryBase
protected array $alterTags

The query tags.

from  QueryBase
protected bool|null $accessCheck

Whether access check is requested or not.

from  QueryBase
protected bool $allRevisions

Flag indicating whether to query the current revision or all revisions.

from  QueryBase
protected bool $latestRevision

Flag indicating whether to query the latest revision.

from  QueryBase
protected array $pager

The query pager data.

from  QueryBase
protected array $namespaces

List of potential namespaces of the classes belonging to this query.

from  QueryBase
protected SelectInterface $sqlQuery

The build sql select query.

from  Query
protected TablesInterface $tables

The Tables object for this query.

from  Query
protected array $sqlFields

An array of fields keyed by the field alias.

from  Query
protected array $sqlGroupBy

An array of strings added as to the group by, keyed by the string to avoid duplicates.

from  Query
protected Connection $connection from  Query
protected array $sqlExpressions

Stores the sql expressions used to build the sql query.

Methods

__construct(EntityTypeInterface $entity_type, string $conjunction, Connection $connection, array $namespaces)

Constructs a query object.

from  Query
string
getEntityTypeId()

Gets the ID of the entity type for this query.

$this
condition($property, string|int|bool|array|null $value = NULL, string|null $operator = NULL, string|null $langcode = NULL)

Add a condition to the query or a condition group.

$this
exists($property, string|null $langcode = NULL)

Queries for a non-empty value on a field.

$this
notExists($property, string|null $langcode = NULL)

Queries for an empty field.

$this
range(int|null $start = NULL, int|null $length = NULL)

Defines the range of the query.

conditionGroupFactory(string $conjunction = 'AND')

Creates an object holding a group of conditions.

andConditionGroup()

Creates a new group of conditions ANDed together.

orConditionGroup()

Creates a new group of conditions ORed together.

$this
sort(string $field, string $direction = 'ASC', string|null $langcode = NULL)

Sorts the result set by a given field.

$this
count()

Makes this a count query.

$this
accessCheck(bool $access_check = TRUE)

Enables or disables access checking for this query.

$this
currentRevision()

Limits the query to only default revisions.

$this
latestRevision()

Queries the latest revision.

$this
allRevisions()

Queries all the revisions.

$this
pager(int $limit = 10, int|null $element = NULL)

Enables a pager for the query.

initializePager()

Gets the total number of results and initialize a pager for the query.

$this
tableSort(array $headers)

Enables sortable tables for this query.

__clone()

Implements the magic __clone method.

from  Query
$this
addTag($tag)

Adds a tag to a query.

true
hasTag($tag)

Determines if a given query has a given tag.

true
hasAllTags()

Determines if a given query has all specified tags.

true
hasAnyTag()

Determines if a given query has any specified tag.

$this
addMetaData($key, $object)

Adds additional metadata to the query.

The
getMetaData($key)

Retrieves a given piece of metadata.

aggregate($field, $function, $langcode = NULL, $alias = NULL)

{@inheritdoc}

conditionAggregate($field, $function = NULL, $value = NULL, $operator = '=', $langcode = NULL)

{@inheritdoc}

sortAggregate($field, $function, $direction = 'ASC', $langcode = NULL)

{@inheritdoc}

groupBy($field, $langcode = NULL)

{@inheritdoc}

string
getAggregationAlias(string $field, string $function)

Generates an alias for a field and its aggregated function.

static array
getNamespaces($object)

Gets a list of namespaces of the ancestors of a class.

static string
getClass(array $namespaces, string $short_class_name)

Finds a class in a list of namespaces.

int|array
execute()

Execute the query.

$this
prepare()

Prepares the basic query with proper metadata/tags and base fields.

$this
compile()

Compiles the conditions.

from  Query
$this
addSort()

Adds the sort to the build query.

from  Query
$this
finish()

Overrides \Drupal\Core\Entity\Query\Sql\Query::finish().

int|array
result()

Overrides \Drupal\Core\Entity\Query\Sql\Query::result().

string
getSqlField(string $field, string $langcode)

Constructs a select expression for a given field and language.

from  Query
bool
isSimpleQuery()

Determines whether the query requires GROUP BY and ORDER BY MIN/MAX.

from  Query
getTables(SelectInterface $sql_query)

Gets the Tables object for this query.

from  Query
__toString()

Implements the magic __toString method.

from  Query
conditionAggregateGroupFactory(string $conjunction = 'AND')

Creates an object holding a group of conditions.

$this
existsAggregate(string $field, string $function, $langcode = NULL)

Queries for the existence of a field.

$this
notExistsAggregate(string $field, string $function, string $langcode = NULL)

Queries for the nonexistence of a field.

$this
addAggregate()

Adds the aggregations to the query.

$this
compileAggregate()

Builds the aggregation conditions part of the query.

$this
addGroupBy()

Adds the groupby values to the actual query.

$this
addSortAggregate()

Builds the aggregation sort part of the query.

string
createSqlAlias(string $field, string $sql_field)

Builds a sql alias as expected in the result.

Details

__construct(EntityTypeInterface $entity_type, string $conjunction, Connection $connection, array $namespaces)

Constructs a query object.

Parameters

EntityTypeInterface $entity_type

The entity type definition.

string $conjunction
  • AND: all of the conditions on the query need to match.
  • OR: at least one of the conditions on the query need to match.
Connection $connection

The database connection to run the query against.

array $namespaces

List of potential namespaces of the classes belonging to this query.

string getEntityTypeId()

Gets the ID of the entity type for this query.

Return Value

string

The entity type ID.

$this condition($property, string|int|bool|array|null $value = NULL, string|null $operator = NULL, string|null $langcode = NULL)

Add a condition to the query or a condition group.

For example, to find all entities containing both the Turkish 'merhaba' and the Polish 'siema' within a 'greetings' text field:

Parameters

$property
string|int|bool|array|null $value

(optional) The value for $field. In most cases, this is a scalar and it's treated as case-insensitive. For more complex operators, it is an array. The meaning of each element in the array is dependent on $operator. Defaults to NULL, for most operators (except: 'IS NULL', 'IS NOT NULL') it always makes the condition false.

string|null $operator

(optional) The comparison operator. Possible values:

  • '=', '<>', '>', '>=', '<', '<=', 'STARTS_WITH', 'CONTAINS', 'ENDS_WITH': These operators expect $value to be a literal of the same type as the column.
  • 'IN', 'NOT IN': These operators expect $value to be an array of literals of the same type as the column.
  • 'IS NULL', 'IS NOT NULL': These operators ignore $value, for that reason it is recommended to use a $value of NULL for clarity.
  • 'BETWEEN', 'NOT BETWEEN': These operators expect $value to be an array of two literals of the same type as the column. If NULL, defaults to the '=' operator.
string|null $langcode

(optional) The language code allows filtering results by specific language. If two or more conditions omit the langcode within one condition group then they are presumed to apply to the same translation. If within one condition group one condition has a langcode and another does not they are not presumed to apply to the same translation. If omitted (NULL), any translation satisfies the condition.

Return Value

$this

$this exists($property, string|null $langcode = NULL)

Queries for a non-empty value on a field.

Parameters

$property
string|null $langcode

(optional) The language code allows filtering results by specific language. If omitted (NULL), any translation satisfies the condition.

Return Value

$this

$this notExists($property, string|null $langcode = NULL)

Queries for an empty field.

Parameters

$property
string|null $langcode

(optional) The language code allows filtering results by specific language. If omitted (NULL), any translation satisfies the condition.

Return Value

$this

$this range(int|null $start = NULL, int|null $length = NULL)

Defines the range of the query.

Parameters

int|null $start

(optional) The first record from the result set to return. If NULL, removes any range directives that are set.

int|null $length

(optional) The maximum number of rows to return. If $start and $length are NULL, then a complete result set will be generated. If $start is not NULL and $length is NULL, then an empty result set will be generated.

Return Value

$this

protected ConditionInterface conditionGroupFactory(string $conjunction = 'AND')

Creates an object holding a group of conditions.

See andConditionGroup() and orConditionGroup() for more.

Parameters

string $conjunction
  • AND (default): this is the equivalent of andConditionGroup().
  • OR: this is the equivalent of orConditionGroup().

Return Value

ConditionInterface

An object holding a group of conditions.

ConditionInterface andConditionGroup()

Creates a new group of conditions ANDed together.

For example, consider a drawing entity type with a 'figures' multi-value field containing 'shape' and 'color' columns. To find all drawings containing both a red triangle and a blue circle:

Return Value

ConditionInterface

A condition object whose conditions will be combined with AND.

ConditionInterface orConditionGroup()

Creates a new group of conditions ORed together.

For example, consider a map entity with an 'attributes' field containing 'building_type' and 'color' columns. To find all green and red bikesheds:

Return Value

ConditionInterface

A condition object whose conditions will be combined with OR.

$this sort(string $field, string $direction = 'ASC', string|null $langcode = NULL)

Sorts the result set by a given field.

Parameters

string $field

Name of a field.

string $direction

(optional) The direction to sort. Allowed values are "ASC" and "DESC". Defaults to "ASC".

string|null $langcode

(optional) The language code allows filtering results by specific language. If omitted (NULL), any translation satisfies the condition.

Return Value

$this

$this count()

Makes this a count query.

For count queries, execute() returns the number entities found.

Return Value

$this

$this accessCheck(bool $access_check = TRUE)

Enables or disables access checking for this query.

Parameters

bool $access_check

(optional) Whether access check is requested or not. Defaults to TRUE.

Return Value

$this

$this currentRevision()

Limits the query to only default revisions.

See the @link entity_api Entity API topic @endlink for information about the current revision.

Return Value

$this

$this latestRevision()

Queries the latest revision.

The latest revision is the most recent revision of an entity. This will be either the default revision, or a pending revision if one exists and it is newer than the default.

Return Value

$this

$this allRevisions()

Queries all the revisions.

Return Value

$this

$this pager(int $limit = 10, int|null $element = NULL)

Enables a pager for the query.

Parameters

int $limit

(optional) An integer specifying the number of elements per page. If passed 0, the pager is disabled.

int|null $element

(optional) An integer to distinguish between multiple pagers on one page. If not provided, one is automatically calculated by incrementing the next pager element value.

Return Value

$this

protected initializePager()

Gets the total number of results and initialize a pager for the query.

The pager can be disabled by either setting the pager limit to 0, or by setting this query to be a count query.

$this tableSort(array $headers)

Enables sortable tables for this query.

Parameters

array $headers

An array of headers of the same structure as described in template_preprocess_table(). Use a 'specifier' in place of a 'field' to specify what to sort on. This can be an entity or a field as described in condition().

Return Value

$this

__clone()

Implements the magic __clone method.

Reset fields and GROUP BY when cloning.

$this addTag($tag)

Adds a tag to a query.

Tags are strings that identify a query. A query may have any number of tags. Tags are used to mark a query so that alter hooks may decide if they wish to take action. Tags should be all lower-case and contain only letters, numbers, and underscore, and start with a letter. That is, they should follow the same rules as PHP identifiers in general.

Parameters

$tag

The tag to add.

Return Value

$this

The called object.

true hasTag($tag)

Determines if a given query has a given tag.

Parameters

$tag

The tag to check.

Return Value

true

if this query has been marked with this tag, FALSE otherwise.

true hasAllTags()

Determines if a given query has all specified tags.

Each tag to check should be supplied as a separate argument.

Return Value

true

if this query has been marked with all specified tags, FALSE otherwise.

true hasAnyTag()

Determines if a given query has any specified tag.

Each tag to check should be supplied as a separate argument.

Return Value

true

if this query has been marked with at least one of the specified tags, FALSE otherwise.

$this addMetaData($key, $object)

Adds additional metadata to the query.

Often, a query may need to provide additional contextual data to alter hooks. Alter hooks may then use that information to decide if and how to take action.

Parameters

$key

The unique identifier for this piece of metadata. Must be a string that follows the same rules as any other PHP identifier.

$object

The additional data to add to the query. May be any valid PHP variable.

Return Value

$this

The called object.

The getMetaData($key)

Retrieves a given piece of metadata.

Parameters

$key

The unique identifier for the piece of metadata to retrieve.

Return Value

The

previously attached metadata object, or NULL if one doesn't exist.

aggregate($field, $function, $langcode = NULL, $alias = NULL)

{@inheritdoc}

Parameters

$field
$function
$langcode
$alias

conditionAggregate($field, $function = NULL, $value = NULL, $operator = '=', $langcode = NULL)

{@inheritdoc}

Parameters

$field
$function
$value
$operator
$langcode

sortAggregate($field, $function, $direction = 'ASC', $langcode = NULL)

{@inheritdoc}

Parameters

$field
$function
$direction
$langcode

groupBy($field, $langcode = NULL)

{@inheritdoc}

Parameters

$field
$langcode

protected string getAggregationAlias(string $field, string $function)

Generates an alias for a field and its aggregated function.

Parameters

string $field

The field name used in the alias.

string $function

The aggregation function used in the alias.

Return Value

string

The alias for the field.

static array getNamespaces($object)

Gets a list of namespaces of the ancestors of a class.

Parameters

$object

An object within a namespace.

Return Value

array

A list containing the namespace of the class, the namespace of the parent of the class and so on and so on.

static string getClass(array $namespaces, string $short_class_name)

Finds a class in a list of namespaces.

Parameters

array $namespaces

A list of namespaces.

string $short_class_name

A class name without namespace.

Return Value

string

The fully qualified name of the class.

int|array execute()

Execute the query.

Return Value

int|array

Returns an integer for count queries or an array of ids. The values of the array are always entity ids. The keys will be revision ids if the entity supports revision and entity ids if not.

$this prepare()

Prepares the basic query with proper metadata/tags and base fields.

Return Value

$this

Returns the called object.

Exceptions

QueryException

protected $this compile()

Compiles the conditions.

Return Value

$this

Returns the called object.

protected $this addSort()

Adds the sort to the build query.

Return Value

$this

Returns the called object.

protected $this finish()

Overrides \Drupal\Core\Entity\Query\Sql\Query::finish().

Adds the sql expressions to the query.

Return Value

$this

Returns the called object.

protected int|array result()

Overrides \Drupal\Core\Entity\Query\Sql\Query::result().

Return Value

int|array

Returns the query result as entity IDs.

protected string getSqlField(string $field, string $langcode)

Constructs a select expression for a given field and language.

Parameters

string $field

The name of the field being queried.

string $langcode

The language code of the field.

Return Value

string

An expression that will select the given field for the given language in a SELECT query, such as 'base_table.id'.

protected bool isSimpleQuery()

Determines whether the query requires GROUP BY and ORDER BY MIN/MAX.

Return Value

bool

TablesInterface getTables(SelectInterface $sql_query)

Gets the Tables object for this query.

Parameters

SelectInterface $sql_query

The SQL query object being built.

Return Value

TablesInterface

The object that adds tables and fields to the SQL query object.

__toString()

Implements the magic __toString method.

ConditionInterface conditionAggregateGroupFactory(string $conjunction = 'AND')

Creates an object holding a group of conditions.

See andConditionAggregateGroup() and orConditionAggregateGroup() for more.

Parameters

string $conjunction
  • AND (default): this is the equivalent of andConditionAggregateGroup().
  • OR: this is the equivalent of andConditionAggregateGroup().

Return Value

ConditionInterface

An object holding a group of conditions.

$this existsAggregate(string $field, string $function, $langcode = NULL)

Queries for the existence of a field.

Parameters

string $field

The name of the field.

string $function

The aggregate function.

$langcode

(optional) The language code.

Return Value

$this

The called object.

$this notExistsAggregate(string $field, string $function, string $langcode = NULL)

Queries for the nonexistence of a field.

Parameters

string $field

The name of a field.

string $function

The aggregate function.

string $langcode

(optional) The language code.

Return Value

$this

The called object.

protected $this addAggregate()

Adds the aggregations to the query.

Return Value

$this

Returns the called object.

protected $this compileAggregate()

Builds the aggregation conditions part of the query.

Return Value

$this

Returns the called object.

protected $this addGroupBy()

Adds the groupby values to the actual query.

Return Value

$this

Returns the called object.

protected $this addSortAggregate()

Builds the aggregation sort part of the query.

Return Value

$this

Returns the called object.

string createSqlAlias(string $field, string $sql_field)

Builds a sql alias as expected in the result.

Parameters

string $field

The field as passed in by the caller.

string $sql_field

The sql field as returned by getSqlField.

Return Value

string

The SQL alias expected in the return value. The dots in $sql_field are replaced with underscores and if a default fallback to .value happened, the _value is stripped.