interface MigrateDestinationInterface

Same name in other branches
  1. 9 core/modules/migrate/src/Plugin/MigrateDestinationInterface.php \Drupal\migrate\Plugin\MigrateDestinationInterface
  2. 8.9.x core/modules/migrate/src/Plugin/MigrateDestinationInterface.php \Drupal\migrate\Plugin\MigrateDestinationInterface
  3. 11.x core/modules/migrate/src/Plugin/MigrateDestinationInterface.php \Drupal\migrate\Plugin\MigrateDestinationInterface

Defines an interface for Migration Destination classes.

Destinations are responsible for persisting source data into the destination Drupal.

Hierarchy

Expanded class hierarchy of MigrateDestinationInterface

All classes that implement MigrateDestinationInterface

See also

\Drupal\migrate\Plugin\migrate\destination\DestinationBase

\Drupal\migrate\Plugin\MigrateDestinationPluginManager

\Drupal\migrate\Attribute\MigrateDestination

Plugin API

Related topics

6 files declare their use of MigrateDestinationInterface
DestinationBase.php in core/modules/migrate/src/Plugin/migrate/destination/DestinationBase.php
MigrateExecutableTest.php in core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php
MigrateLookupTest.php in core/modules/migrate/tests/src/Unit/MigrateLookupTest.php
MigrateStubTest.php in core/modules/migrate/tests/src/Unit/MigrateStubTest.php
MigrationStateUnitTest.php in core/modules/migrate_drupal/tests/src/Unit/MigrationStateUnitTest.php

... See full list

File

core/modules/migrate/src/Plugin/MigrateDestinationInterface.php, line 21

Namespace

Drupal\migrate\Plugin
View source
interface MigrateDestinationInterface extends PluginInspectionInterface {
    
    /**
     * 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 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:
     *   @code
     *     return [
     *       'id' => [
     *         'type' => 'integer',
     *         'unsigned' => FALSE,
     *         'size' => 'big',
     *       ],
     *       'version' => [
     *         'type' => 'string',
     *         'max_length' => 64,
     *         'is_ascii' => TRUE,
     *       ],
     *     ];
     *   @endcode
     *   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:
     *   @code
     *     return [
     *       'format' => [
     *         'type' => 'text.format',
     *       ],
     *     ];
     *   @endcode
     *   Additional custom keys/values, that are not part of field storage
     *   definition, can be passed in definitions:
     *   @code
     *     return [
     *       'nid' => [
     *         'type' => 'integer',
     *         'custom_setting' => 'some_value',
     *       ],
     *     ];
     *   @endcode
     *
     * @see \Drupal\Core\Field\FieldStorageDefinitionInterface::getSettings()
     * @see \Drupal\Core\Field\Plugin\Field\FieldType\IntegerItem
     * @see \Drupal\Core\Field\Plugin\Field\FieldType\StringItem
     * @see \Drupal\text\Plugin\Field\FieldType\TextItem
     */
    public function getIds();
    
    /**
     * Returns an array of destination fields.
     *
     * Derived classes must implement fields(), returning a list of available
     * destination fields.
     *
     * @return array
     *   - Keys: machine names of the fields
     *   - Values: Human-friendly descriptions of the fields.
     */
    public function fields();
    
    /**
     * Import the row.
     *
     * Derived classes must implement import(), to construct one new object
     * (pre-populated) using ID mappings in the Migration.
     *
     * @param \Drupal\migrate\Row $row
     *   The row object.
     * @param array $old_destination_id_values
     *   (optional) The destination IDs from the previous import of this source
     *   row. This is empty the first time a source row is migrated. Defaults to
     *   an empty array.
     *
     * @return array|bool
     *   An indexed array of destination IDs in the same order as defined in the
     *   plugin's getIds() method if the plugin wants to save the IDs to the ID
     *   map, TRUE to indicate success without saving IDs to the ID map, or
     *   FALSE to indicate a failure.
     *
     * @throws \Drupal\migrate\MigrateException
     *   Throws an exception if there is a problem importing the row. By default,
     *   this causes the migration system to treat this row as having failed;
     *   however, any \Drupal\migrate\Plugin\MigrateIdMapInterface status constant
     *   can be set using the $status parameter of
     *   \Drupal\migrate\MigrateException, such as
     *   \Drupal\migrate\Plugin\MigrateIdMapInterface::STATUS_IGNORED.
     */
    public function import(Row $row, array $old_destination_id_values = []);
    
    /**
     * Delete the specified destination object from the target Drupal.
     *
     * @param array $destination_identifier
     *   An associative array of destination IDs for the object to delete. The
     *   array keys are defined by the
     *   \Drupal\migrate\Plugin\MigrateDestinationInterface::getIds() method used
     *   by the destination object.
     */
    public function rollback(array $destination_identifier);
    
    /**
     * Whether the destination can be rolled back or not.
     *
     * @return bool
     *   TRUE if rollback is supported, FALSE if not.
     */
    public function supportsRollback();
    
    /**
     * The rollback action for the last imported item.
     *
     * @return int
     *   The MigrateIdMapInterface::ROLLBACK_ constant indicating how an imported
     *   item should be handled on rollback.
     */
    public function rollbackAction();
    
    /**
     * Gets the destination module handling the destination data.
     *
     * @return string|null
     *   The destination module or NULL if not found.
     */
    public function getDestinationModule();

}

Members

Title Sort descending Modifiers Object type Summary Overrides
MigrateDestinationInterface::fields public function Returns an array of destination fields. 10
MigrateDestinationInterface::getDestinationModule public function Gets the destination module handling the destination data. 1
MigrateDestinationInterface::getIds public function Gets the destination IDs. 11
MigrateDestinationInterface::import public function Import the row. 11
MigrateDestinationInterface::rollback public function Delete the specified destination object from the target Drupal. 1
MigrateDestinationInterface::rollbackAction public function The rollback action for the last imported item. 1
MigrateDestinationInterface::supportsRollback public function Whether the destination can be rolled back or not. 1
PluginInspectionInterface::getPluginDefinition public function Gets the definition of the plugin implementation. 6
PluginInspectionInterface::getPluginId public function Gets the plugin ID of the plugin instance. 2

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