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 | |
---|---|
Name | Description |
fields |
array[]
An array containing a field definition. Each field
must be of form |
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 | |
---|---|
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 {@see \Google\Cloud\Spanner\Google\Cloud\Spanner\Database}, and are as
follows: |
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 {@see \Google\Cloud\Spanner\Google\Cloud\Spanner\Database}, and are as
follows: |
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]`. |