You are here

public function EntityContentBase::getIds in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php \Drupal\migrate\Plugin\migrate\destination\EntityContentBase::getIds()
  2. 10 core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php \Drupal\migrate\Plugin\migrate\destination\EntityContentBase::getIds()

Gets the destination IDs.

To support MigrateIdMap maps, derived destination classes should return field definition(s) corresponding to the primary key of the destination being implemented. These are used to construct the destination key fields of the map table for a migration using this destination.

Return value

array[] An associative array of field definitions keyed by field ID. Values are associative arrays with a structure that contains the field type ('type' key). The other keys are the field storage settings as they are returned by FieldStorageDefinitionInterface::getSettings(). As an example, for a composite destination primary key that is defined by an integer and a string, the returned value might look like:

return [
  'id' => [
    'type' => 'integer',
    'unsigned' => FALSE,
    'size' => 'big',
  ],
  'version' => [
    'type' => 'string',
    'max_length' => 64,
    'is_ascii' => TRUE,
  ],
];

If 'type' points to a field plugin with multiple columns and needs to refer to a column different than 'value', the key of that column will be appended as a suffix to the plugin name, separated by dot ('.'). Example:

return [
  'format' => [
    'type' => 'text.format',
  ],
];

Additional custom keys/values, that are not part of field storage definition, can be passed in definitions:

return [
  'nid' => [
    'type' => 'integer',
    'custom_setting' => 'some_value',
  ],
];

Overrides MigrateDestinationInterface::getIds

See also

\Drupal\Core\Field\FieldStorageDefinitionInterface::getSettings()

\Drupal\Core\Field\Plugin\Field\FieldType\IntegerItem

\Drupal\Core\Field\Plugin\Field\FieldType\StringItem

\Drupal\text\Plugin\Field\FieldType\TextItem

2 methods override EntityContentBase::getIds()
EntityContentComplete::getIds in core/modules/migrate/src/Plugin/migrate/destination/EntityContentComplete.php
Gets the destination IDs.
EntityRevision::getIds in core/modules/migrate/src/Plugin/migrate/destination/EntityRevision.php
Gets the destination IDs.

File

core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php, line 228

Class

EntityContentBase
Provides destination class for all content entities lacking a specific class.

Namespace

Drupal\migrate\Plugin\migrate\destination

Code

public function getIds() {
  $ids = [];
  $id_key = $this
    ->getKey('id');
  $ids[$id_key] = $this
    ->getDefinitionFromEntity($id_key);
  if ($this
    ->isTranslationDestination()) {
    $langcode_key = $this
      ->getKey('langcode');
    if (!$langcode_key) {
      throw new MigrateException(sprintf('The "%s" entity type does not support translations.', $this->storage
        ->getEntityTypeId()));
    }
    $ids[$langcode_key] = $this
      ->getDefinitionFromEntity($langcode_key);
  }
  return $ids;
}