Cloud Spanner Client - Class StructType (1.60.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`

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
NameDescription
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\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
NameDescription
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 {@see \Google\Cloud\Spanner\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
TypeDescription
Google\Cloud\Spanner\StructTypeThe current instance, for chaining additional field definitions.

addUnnamed

Add a struct field with no name.

Example:

$structType->addUnnamed(Database::TYPE_STRING);
Parameter
NameDescription
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 {@see \Google\Cloud\Spanner\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
TypeDescription
Google\Cloud\Spanner\StructTypeThe current instance, for chaining additional field definitions.

fields

Fetch the defined fields list.

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