Same name and namespace in other branches
  1. 8.9.x core/modules/migrate/src/Plugin/migrate/process/MakeUniqueEntityField.php \Drupal\migrate\Plugin\migrate\process\MakeUniqueEntityField
  2. 9 core/modules/migrate/src/Plugin/migrate/process/MakeUniqueEntityField.php \Drupal\migrate\Plugin\migrate\process\MakeUniqueEntityField

Hierarchy

Expanded class hierarchy of MakeUniqueEntityField

1 file declares its use of MakeUniqueEntityField
MakeUniqueEntityFieldTest.php in core/modules/migrate/tests/src/Unit/process/MakeUniqueEntityFieldTest.php

File

core/modules/migrate/src/Plugin/migrate/process/MakeUniqueEntityField.php, line 82

Namespace

Drupal\migrate\Plugin\migrate\process
View source
class MakeUniqueEntityField extends MakeUniqueBase implements ContainerFactoryPluginInterface {

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * The current migration.
   *
   * @var \Drupal\migrate\Plugin\MigrationInterface
   */
  protected $migration;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EntityTypeManagerInterface $entity_type_manager) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->migration = $migration;
    $this->entityTypeManager = $entity_type_manager;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
    return new static($configuration, $plugin_id, $plugin_definition, $migration, $container
      ->get('entity_type.manager'));
  }

  /**
   * {@inheritdoc}
   */
  protected function exists($value) {

    // Plugins are cached so for every run we need a new query object.
    $query = $this->entityTypeManager
      ->getStorage($this->configuration['entity_type'])
      ->getQuery()
      ->accessCheck(FALSE)
      ->condition($this->configuration['field'], $value);
    if (!empty($this->configuration['migrated'])) {

      // Check if each entity is in the ID map.
      $idMap = $this->migration
        ->getIdMap();
      foreach ($query
        ->execute() as $id) {
        $dest_id_values[$this->configuration['field']] = $id;
        if ($idMap
          ->lookupSourceId($dest_id_values)) {
          return TRUE;
        }
      }
      return FALSE;
    }
    else {

      // Just check if any such entity exists.
      return $query
        ->count()
        ->execute();
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
MakeUniqueBase::transform public function Creates a unique value based on the source value.
MakeUniqueEntityField::$entityTypeManager protected property The entity type manager.
MakeUniqueEntityField::$migration protected property The current migration.
MakeUniqueEntityField::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
MakeUniqueEntityField::exists protected function This is a query checking the existence of some value. Overrides MakeUniqueBase::exists
MakeUniqueEntityField::__construct public function