function Sql::getFieldSchema

Same name in other branches
  1. 9 core/modules/migrate/src/Plugin/migrate/id_map/Sql.php \Drupal\migrate\Plugin\migrate\id_map\Sql::getFieldSchema()
  2. 8.9.x core/modules/migrate/src/Plugin/migrate/id_map/Sql.php \Drupal\migrate\Plugin\migrate\id_map\Sql::getFieldSchema()
  3. 11.x core/modules/migrate/src/Plugin/migrate/id_map/Sql.php \Drupal\migrate\Plugin\migrate\id_map\Sql::getFieldSchema()

Creates schema from an ID definition.

Parameters

array $id_definition: The definition of the field having the structure as the items returned by MigrateSourceInterface or MigrateDestinationInterface::getIds().

Return value

array The database schema definition.

See also

\Drupal\migrate\Plugin\MigrateSourceInterface::getIds()

\Drupal\migrate\Plugin\MigrateDestinationInterface::getIds()

1 call to Sql::getFieldSchema()
Sql::ensureTables in core/modules/migrate/src/Plugin/migrate/id_map/Sql.php
Create the map and message tables if they don't already exist.
1 method overrides Sql::getFieldSchema()
TestSqlIdMap::getFieldSchema in core/modules/migrate/tests/src/Unit/TestSqlIdMap.php
Gets the field schema.

File

core/modules/migrate/src/Plugin/migrate/id_map/Sql.php, line 517

Class

Sql
Defines the sql based ID map implementation.

Namespace

Drupal\migrate\Plugin\migrate\id_map

Code

protected function getFieldSchema(array $id_definition) {
    $type_parts = explode('.', $id_definition['type']);
    if (count($type_parts) == 1) {
        $type_parts[] = 'value';
    }
    unset($id_definition['type']);
    // Get the field storage definition.
    $definition = BaseFieldDefinition::create($type_parts[0]);
    // Get a list of setting keys belonging strictly to the field definition.
    $default_field_settings = $definition->getSettings();
    // Separate field definition settings from custom settings. Custom settings
    // are settings passed in $id_definition that are not part of field storage
    // definition settings.
    $field_settings = array_intersect_key($id_definition, $default_field_settings);
    $custom_settings = array_diff_key($id_definition, $default_field_settings);
    // Resolve schema from field storage definition settings.
    $schema = $definition->setSettings($field_settings)
        ->getColumns()[$type_parts[1]];
    // Merge back custom settings.
    return $schema + $custom_settings;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.