By default, parameters MUST be bound using named or positional bindings. Literals are disabled by default, and must be enabled by setting $options['allowLiterals'] to true. As with any SQL-style language, using parameter binding is highly recommended. Idiomatic usage is via {@see \Google\Cloud\Datastore\DatastoreClient::gqlQuery()}. Example: use Google\Cloud\ServiceBuilder; $cloud = new ServiceBuilder(); $datastore = $cloud->datastore(); $query = $datastore->gqlQuery('SELECT * FROM Companies WHERE companyName = @companyName', [ 'bindings' => [ 'companyName' => 'Google' ] ]); $res = $datastore->runQuery($query); foreach ($res as $company) { echo $company['companyName']; // Google } Positional binding is also supported $query = $datastore->gqlQuery('SELECT * FROM Companies WHERE companyName = @1', [ 'bindings' => [ 'Google' ] ]); While not recommended, you can use literals in your query string: $query = $datastore->gqlQuery("SELECT * FROM Companies WHERE companyName = 'Google'", [ 'allowLiterals' => true ]);
See also: https://cloud.google.com/datastore/docs/apis/gql/gql_reference GQL Reference
Inheritance: implements Google\Cloud\Datastore\Query\QueryInterface, use trait Google\Cloud\ArrayTrait, use trait Google\Cloud\Datastore\DatastoreTrait
 public function testJsonSerialize()
 {
     $query = new GqlQuery($this->mapper, 'SELECT * FROM foo');
     $this->assertEquals($query->jsonSerialize(), $query->queryObject());
 }