Cloud Datastore Client - Class Query (1.23.0)

Reference documentation and code samples for the Cloud Datastore Client class Query.

Represents a Cloud Datastore Query

Queries can be created either by using the builder pattern, or by providing a Query when creating this object.

Example:

use Google\Cloud\Datastore\DatastoreClient;

$datastore = new DatastoreClient();

$query = $datastore->query();
$query->kind('Companies');
$query->filter('companyName', '=', 'Google');

$res = $datastore->runQuery($query);
foreach ($res as $company) {
    echo $company['companyName']; // Google
}
// Queries can also be constructed using a
// [Query Object](https://cloud.google.com/datastore/reference/rest/v1/projects/runQuery#query):
$query = $datastore->query([
    'query' => [
        'kind' => [
            [
                'name' => 'Companies'
            ]
        ],
        'filter' => [
            'propertyFilter' => [
                'op' => 'EQUAL',
                'property' => [
                    'name' => 'companyName'
                ],
                'value' => [
                    'stringValue' => 'Google'
                ]
            ]
        ]
    ]
]);

Namespace

Google \ Cloud \ Datastore \ Query

Methods

__construct

Parameters
NameDescription
entityMapper Google\Cloud\Datastore\EntityMapper

An instance of EntityMapper

query array

optional(https://cloud.google.com/datastore/reference/rest/v1/projects/runQuery#query)

projection

Set the Query Projection.

Accepts an array of properties. If set, only these properties will be returned.

Example:

$query->projection(['firstName', 'lastName']);
Parameter
NameDescription
properties array|string

The property or properties to include in the result.

Returns
TypeDescription
Google\Cloud\Datastore\Query\Query

keysOnly

Set the query to return only keys (no properties).

Example:

$query->keysOnly();
Returns
TypeDescription
Google\Cloud\Datastore\Query\Query

kind

Set the Kind to query.

If empty, returns entities of all kinds. Must be set in order to filter results. While you may supply as many kinds as you wish, datastore currently only accepts one at a time.

Example:

$query->kind('Person');
Parameter
NameDescription
kinds array|string

The kind or kinds to return. Only a single kind is currently supported.

Returns
TypeDescription
Google\Cloud\Datastore\Query\Query

filter

Add a filter to the query.

If the top-level filter is specified as a propertyFilter, it will be replaced. Any composite filters will be preserved and the new filter will be added.

Filters can be added either by supplying three arguments (string $property, string $operator, mixed $value) to add a property filter to the root AND filter or by using a single argument invocation (array $filter) to add an array representation of Composite / Property Filter to the root AND filter. They can also be mixed and used together.

Example:

// Using (string $property, string $operator, mixed $value) invocation
// to add property filter.
$query->filter('firstName', '=', 'Bob')
    ->filter('lastName', '=', 'Testguy');

Using (array $filter) invocation to add composite/property filter.

use Google\Cloud\Datastore\Query\Filter;
$filterA = Filter::or([$testFilter, ...$testFilters]); // OR filter
$filterB = Filter::and([$testFilter, ...$testFilters]); // AND filter
$filterC = Filter::where('foo', 'NOT IN', ['bar']); // Property filter
$query->filter($filterA)
    ->filter($filterB)
    ->filter($filterC)
    ->filter('foo', '<', 'bar');
Parameters
NameDescription
filterOrProperty string|array

Either a string property name or an array representation of Property/Composite filter returned by Filter::and(), Filter::or() and Filter::where().

operator string|null

[optional] The operator to use in the filter if property name is used in the first argument. A list of allowed operators may be found here. Short comparison operators are provided for convenience and are mapped to their datastore-compatible equivalents. Available short operators are =, !=, <, <=, >, >=, IN and NOT IN.

value mixed

[optional] The value to check if property name is used in the first argument.

Returns
TypeDescription
Google\Cloud\Datastore\Query\Query

hasAncestor

Query for entities by their ancestors.

Keys can be provided either via a Google\Cloud\Datastore\Query\Google\Cloud\Datastore\Key object, or by providing a kind, identifier and (optionally) an identifier type.

Example:

$key = $datastore->key('Person', 'Bob');
$query->hasAncestor($key);
// Specifying an identifier type
$key = $datastore->key('Robots', '1337', [
    'identifierType' => Key::TYPE_NAME
]);
$query->hasAncestor($key);
Parameter
NameDescription
key Google\Cloud\Datastore\Key

The ancestor Key instance.

Returns
TypeDescription
Google\Cloud\Datastore\Query\Query

order

Specify an order for the query.

Example:

$query->order('birthDate', Query::ORDER_DESCENDING);
Parameters
NameDescription
property string

The property to order by.

direction string

[optional] The direction to order in. Google Cloud PHP provides class constants which map to allowed Datastore values. Those constants are Query::ORDER_DESCENDING and Query::ORDER_ASCENDING. Defaults to Query::ORDER_ACENDING.

Returns
TypeDescription
Google\Cloud\Datastore\Query\Query

distinctOn

The properties to make distinct.

The query results will contain the first result for each distinct combination of values for the given properties (if empty, all results are returned).

Example:

$query->distinctOn('lastName');
Parameter
NameDescription
property array|string

The property or properties to make distinct.

Returns
TypeDescription
Google\Cloud\Datastore\Query\Query

start

The starting point for the query results.

Example:

$query->start($lastResultCursor);
Parameter
NameDescription
cursor string

The cursor on which to start the result.

Returns
TypeDescription
Google\Cloud\Datastore\Query\Query

end

The ending point for the query results.

Example:

$query->end($lastResultCursor);
Parameter
NameDescription
cursor string

The cursor on which to end the result.

Returns
TypeDescription
Google\Cloud\Datastore\Query\Query

offset

The number of results to skip.

Example:

$query->offset(2);
Parameter
NameDescription
num int

The number of results to skip.

Returns
TypeDescription
Google\Cloud\Datastore\Query\Query

limit

The number of results to return.

Example:

$query->limit(50);
Parameter
NameDescription
num int

The number of results to return.

Returns
TypeDescription
Google\Cloud\Datastore\Query\Query

canPaginate

Indicate that this type does support automatic pagination.

Returns
TypeDescription
bool

queryObject

Return a service-compliant array.

Returns
TypeDescription
array

queryKey

Return the query_type union field name.

Returns
TypeDescription
string

aggregation

Parameter
NameDescription
aggregation Google\Cloud\Datastore\Query\Aggregation

jsonSerialize

Constants

OP_DEFAULT

Value: self::OP_EQUALS

OP_LESS_THAN

Value: 'LESS_THAN'

OP_LESS_THAN_OR_EQUAL

Value: 'LESS_THAN_OR_EQUAL'

OP_GREATER_THAN

Value: 'GREATER_THAN'

OP_GREATER_THAN_OR_EQUAL

Value: 'GREATER_THAN_OR_EQUAL'

OP_EQUALS

Value: 'EQUAL'

OP_NOT_EQUALS

Value: 'NOT_EQUAL'

OP_IN

Value: 'IN'

OP_NOT_IN

Value: 'NOT_IN'

OP_HAS_ANCESTOR

Value: 'HAS_ANCESTOR'

ORDER_DEFAULT

Value: self::ORDER_ASCENDING

ORDER_DESCENDING

Value: 'DESCENDING'

ORDER_ASCENDING

Value: 'ASCENDING'