Cloud Spanner Client - Class StructType (1.77.0)

Reference documentation and code samples for the Cloud Spanner Client class StructType.

Represents a Struct Query Parameter type declaration.

Example:

use Google\Cloud\Spanner\StructType;
use Google\Cloud\Spanner\Database;
use Google\Cloud\Spanner\SpannerClient;

$spanner
= new SpannerClient();
$database
= $spanner->connect('my-instance', 'my-database');

$res
= $database->execute('SELECT @userStruct.firstName, @userStruct.lastName', [
   
'parameters' => [
       
'userStruct' => [
           
'firstName' => 'John',
           
'lastName' => 'Testuser'
       
]
   
],
   
'types' => [
       
'userStruct' => (new StructType())
           
->add('firstName', Database::TYPE_STRING)
           
->add('lastName', Database::TYPE_STRING)
   
]
])->rows()->current();

$fullName
= $res['firstName'] . ' ' . $res['lastName']; // `John Testuser`

Namespace

Google \ Cloud \ Spanner

Methods

__construct

Example:

use Google\Cloud\Spanner\ArrayType;
use Google\Cloud\Spanner\Database;
use Google\Cloud\Spanner\StructType;

$structType
= new StructType([
   
[
       
'name' => 'stringField',
       
'type' => Database::TYPE_STRING
   
],
   
[
       
'name' => 'arrayField',
       
'type' => Database::TYPE_ARRAY,
       
'child' => new ArrayType(Database::TYPE_STRING)
   
]
]);
Parameter
Name Description
fields array[]

An array containing a field definition. Each field must be of form [(string|null) $name, (int) $type, (ArrayType|StructType|null) $child].

add

Add a struct field definition.

Unnamed struct fields may be defined by providing null as the first argument value, however you may find it more convenient to use the provided Google\Cloud\Spanner\StructType::addUnnamed() method.

Example:

$structType->add('firstName', Database::TYPE_STRING);
// If a field is a struct or array, it must be explicitly defined.
use Google\Cloud\Spanner\ArrayType;
use Google\Cloud\Spanner\Database;
use Google\Cloud\Spanner\StructType;

// Create a struct which will be nested later.
$customer
= (new StructType)
   
->add('name', Database::TYPE_STRING)
   
->add('phone', Database::TYPE_STRING)
   
->add('email', Database::TYPE_STRING)
   
->add('lastOrderDate', Database::TYPE_DATE);

// Create an array to nest within the customer type definition.
$orderIds
= new ArrayType(Database::TYPE_INT64);
$customer
->add('orderIds', $orderIds);

// Add the customer definition to the parameter definition.
$structType
->add('customer', $customer);
Parameters
Name Description
name string|null

The field name.

type int|Google\Cloud\Spanner\ArrayType|Google\Cloud\Spanner\StructType

$type A value type code or nested struct or array definition. Accepted integer values are defined as constants on Google\Cloud\Spanner\Database, and are as follows: Database::TYPE_BOOL, Database::TYPE_INT64, Database::TYPE_FLOAT64, Database::TYPE_TIMESTAMP, Database::TYPE_DATE, Database::TYPE_STRING and Database::TYPE_BYTES

Returns
Type Description
Google\Cloud\Spanner\StructType The current instance, for chaining additional field definitions.

addUnnamed

Add a struct field with no name.

Example:

$structType->addUnnamed(Database::TYPE_STRING);
Parameter
Name Description
type int|Google\Cloud\Spanner\ArrayType|Google\Cloud\Spanner\StructType

$type A value type code or nested struct or array definition. Accepted integer values are defined as constants on Google\Cloud\Spanner\Database, and are as follows: Database::TYPE_BOOL, Database::TYPE_INT64, Database::TYPE_FLOAT64, Database::TYPE_TIMESTAMP, Database::TYPE_DATE, Database::TYPE_STRING and Database::TYPE_BYTES

Returns
Type Description
Google\Cloud\Spanner\StructType The current instance, for chaining additional field definitions.

fields

Fetch the defined fields list.

Returns
Type Description
array[] An array containing a field definition. Each field is of form `[(string|null) $name, (int) $type, (ArrayType|StructType|null) $child]`.