class Query extends QueryBase (View source)

Defines the entity query for entities stored in a key value backend.

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 KeyValueFactoryInterface $keyValueFactory

The key value factory.

Methods

__construct(EntityTypeInterface $entity_type, string $conjunction, array $namespaces, KeyValueFactoryInterface $key_value_factory)

Constructs a new 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()

Makes sure that the Condition object is cloned as well.

$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.

Details

__construct(EntityTypeInterface $entity_type, string $conjunction, array $namespaces, KeyValueFactoryInterface $key_value_factory)

Constructs a new Query.

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.
array $namespaces

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

KeyValueFactoryInterface $key_value_factory

The key value factory.

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()

Makes sure that the Condition object is cloned as well.

$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.