class Entity
Same name in this branch
- 11.x core/modules/views/src/Plugin/views/argument_validator/Entity.php \Drupal\views\Plugin\views\argument_validator\Entity
- 11.x core/modules/views/src/Plugin/views/area/Entity.php \Drupal\views\Plugin\views\area\Entity
- 11.x core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Test.php \Drupal\Tests\Component\Annotation\Doctrine\Ticket\Entity
- 11.x core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Entity.php \Entity
Same name in other branches
- 9 core/modules/views/src/Plugin/views/argument_validator/Entity.php \Drupal\views\Plugin\views\argument_validator\Entity
- 9 core/modules/views/src/Plugin/views/area/Entity.php \Drupal\views\Plugin\views\area\Entity
- 9 core/modules/migrate/src/Plugin/migrate/destination/Entity.php \Drupal\migrate\Plugin\migrate\destination\Entity
- 9 core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Test.php \Drupal\Tests\Component\Annotation\Doctrine\Ticket\Entity
- 9 core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Entity.php \Entity
- 8.9.x core/modules/views/src/Plugin/views/argument_validator/Entity.php \Drupal\views\Plugin\views\argument_validator\Entity
- 8.9.x core/modules/views/src/Plugin/views/area/Entity.php \Drupal\views\Plugin\views\area\Entity
- 8.9.x core/modules/migrate/src/Plugin/migrate/destination/Entity.php \Drupal\migrate\Plugin\migrate\destination\Entity
- 8.9.x core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Test.php \Drupal\Tests\Component\Annotation\Doctrine\Ticket\Entity
- 8.9.x core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Entity.php \Entity
- 8.9.x core/lib/Drupal/Core/Entity/Entity.php \Drupal\Core\Entity\Entity
- 10 core/modules/views/src/Plugin/views/argument_validator/Entity.php \Drupal\views\Plugin\views\argument_validator\Entity
- 10 core/modules/views/src/Plugin/views/area/Entity.php \Drupal\views\Plugin\views\area\Entity
- 10 core/modules/migrate/src/Plugin/migrate/destination/Entity.php \Drupal\migrate\Plugin\migrate\destination\Entity
- 10 core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Test.php \Drupal\Tests\Component\Annotation\Doctrine\Ticket\Entity
- 10 core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Entity.php \Entity
Provides a generic destination to import entities.
Available configuration keys:
- default_bundle: (optional) The bundle to use for this row if 'bundle' is not defined on the row. Setting this also allows the fields() method to return bundle fields as well as base fields.
Examples:
source:
plugin: d7_node
process:
nid: tnid
vid: vid
langcode: language
title: title
...
revision_timestamp: timestamp
destination:
plugin: entity:node
This will save the processed, migrated row as a node.
source:
plugin: d7_node
process:
nid: tnid
vid: vid
langcode: language
title: title
...
revision_timestamp: timestamp
destination:
plugin: entity:node
default_bundle: custom
This will save the processed, migrated row as a node of type 'custom'.
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements \Drupal\Component\Plugin\PluginInspectionInterface, \Drupal\Component\Plugin\DerivativeInspectionInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
- class \Drupal\migrate\Plugin\migrate\destination\DestinationBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\migrate\Plugin\MigrateDestinationInterface, \Drupal\migrate\Plugin\RequirementsInterface
- class \Drupal\migrate\Plugin\migrate\destination\Entity extends \Drupal\migrate\Plugin\migrate\destination\DestinationBase implements \Drupal\Core\Plugin\ContainerFactoryPluginInterface, \Drupal\Component\Plugin\DependentPluginInterface uses \Drupal\Core\Entity\DependencyTrait, \Drupal\migrate\EntityFieldDefinitionTrait
- class \Drupal\migrate\Plugin\migrate\destination\DestinationBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\migrate\Plugin\MigrateDestinationInterface, \Drupal\migrate\Plugin\RequirementsInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
Expanded class hierarchy of Entity
73 string references to 'Entity'
- CommentBreadcrumbBuilder::applies in core/
modules/ comment/ src/ CommentBreadcrumbBuilder.php - Whether this breadcrumb builder should be used to build the breadcrumb.
- CommentBreadcrumbBuilder::build in core/
modules/ comment/ src/ CommentBreadcrumbBuilder.php - Builds the breadcrumb.
- CommentTokensHooks::tokenInfo in core/
modules/ comment/ src/ Hook/ CommentTokensHooks.php - Implements hook_token_info().
- CommentTokensHooks::tokenInfo in core/
modules/ comment/ src/ Hook/ CommentTokensHooks.php - Implements hook_token_info().
- CommentTokensHooks::tokens in core/
modules/ comment/ src/ Hook/ CommentTokensHooks.php - Implements hook_tokens().
File
-
core/
modules/ migrate/ src/ Plugin/ migrate/ destination/ Entity.php, line 64
Namespace
Drupal\migrate\Plugin\migrate\destinationView source
abstract class Entity extends DestinationBase implements ContainerFactoryPluginInterface, DependentPluginInterface {
use DependencyTrait;
use EntityFieldDefinitionTrait;
/**
* The entity storage.
*
* @var \Drupal\Core\Entity\EntityStorageInterface
*/
protected $storage;
/**
* The entity field manager.
*/
protected EntityFieldManagerInterface $entityFieldManager;
/**
* The list of the bundles of this entity type.
*
* @var array
*/
protected $bundles;
/**
* Construct a new entity.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin ID for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param \Drupal\migrate\Plugin\MigrationInterface $migration
* The migration.
* @param \Drupal\Core\Entity\EntityStorageInterface $storage
* The storage for this entity type.
* @param array $bundles
* The list of bundles this entity type has.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EntityStorageInterface $storage, array $bundles) {
$plugin_definition += [
'label' => $storage->getEntityType()
->getPluralLabel(),
];
parent::__construct($configuration, $plugin_id, $plugin_definition, $migration);
$this->storage = $storage;
$this->bundles = $bundles;
$this->supportsRollback = TRUE;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, ?MigrationInterface $migration = NULL) {
$entity_type_id = static::getEntityTypeId($plugin_id);
return new static($configuration, $plugin_id, $plugin_definition, $migration, $container->get('entity_type.manager')
->getStorage($entity_type_id), array_keys($container->get('entity_type.bundle.info')
->getBundleInfo($entity_type_id)));
}
/**
* Gets the bundle for the row taking into account the default.
*
* @param \Drupal\migrate\Row $row
* The current row we're importing.
*
* @return string
* The bundle for this row.
*/
public function getBundle(Row $row) {
$default_bundle = $this->configuration['default_bundle'] ?? '';
$bundle_key = $this->getKey('bundle');
return $row->getDestinationProperty($bundle_key) ?: $default_bundle;
}
/**
* {@inheritdoc}
*/
public function fields() {
return [];
}
/**
* Creates or loads an entity.
*
* @param \Drupal\migrate\Row $row
* The row object.
* @param array $old_destination_id_values
* The old destination IDs.
*
* @return \Drupal\Core\Entity\EntityInterface
* The entity we are importing into.
*/
protected function getEntity(Row $row, array $old_destination_id_values) {
$entity_id = reset($old_destination_id_values) ?: $this->getEntityId($row);
if (!empty($entity_id) && ($entity = $this->storage
->load($entity_id))) {
// Allow updateEntity() to change the entity.
$entity = $this->updateEntity($entity, $row) ?: $entity;
}
else {
// Attempt to ensure we always have a bundle.
if ($bundle = $this->getBundle($row)) {
$row->setDestinationProperty($this->getKey('bundle'), $bundle);
}
// Stubs might need some required fields filled in.
if ($row->isStub()) {
$this->processStubRow($row);
}
$entity = $this->storage
->create($row->getDestination());
$entity->enforceIsNew();
}
return $entity;
}
/**
* Updates an entity with the new values from row.
*
* This method should be implemented in extending classes.
*
* @param \Drupal\Core\Entity\EntityInterface $entity
* The entity to update.
* @param \Drupal\migrate\Row $row
* The row object to update from.
*
* @return \Drupal\Core\Entity\EntityInterface
* An updated entity from row values.
*
* @throws \LogicException
* Thrown for config entities, if the destination is for translations and
* either the "property" or "translation" property does not exist.
*/
protected abstract function updateEntity(EntityInterface $entity, Row $row);
/**
* Populates as much of the stub row as possible.
*
* This method can be implemented in extending classes when needed.
*
* @param \Drupal\migrate\Row $row
* The row of data.
*/
protected function processStubRow(Row $row) {
}
/**
* Gets the entity ID of the row.
*
* @param \Drupal\migrate\Row $row
* The row of data.
*
* @return string
* The entity ID for the row that we are importing.
*/
protected function getEntityId(Row $row) {
return $row->getDestinationProperty($this->getKey('id'));
}
/**
* Returns a specific entity key.
*
* @param string $key
* The name of the entity key to return.
*
* @return string|bool
* The entity key, or FALSE if it does not exist.
*
* @see \Drupal\Core\Entity\EntityTypeInterface::getKeys()
*/
protected function getKey($key) {
return $this->storage
->getEntityType()
->getKey($key);
}
/**
* {@inheritdoc}
*/
public function rollback(array $destination_identifier) {
// Delete the specified entity from Drupal if it exists.
$entity = $this->storage
->load(reset($destination_identifier));
if ($entity) {
if ($entity instanceof ContentEntityInterface) {
$entity->setSyncing(TRUE);
}
$entity->delete();
}
}
/**
* {@inheritdoc}
*/
public function calculateDependencies() {
$this->addDependency('module', $this->storage
->getEntityType()
->getProvider());
return $this->dependencies;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
DependencyTrait::$dependencies | protected | property | The object's dependencies. | ||
DependencyTrait::addDependencies | protected | function | Adds multiple dependencies. | ||
DependencyTrait::addDependency | protected | function | Adds a dependency. | ||
DestinationBase::$migration | protected | property | The migration. | ||
DestinationBase::$rollbackAction | protected | property | The rollback action to be saved for the last imported item. | ||
DestinationBase::$supportsRollback | protected | property | Indicates whether the destination can be rolled back. | ||
DestinationBase::checkRequirements | public | function | Checks if requirements for this plugin are OK. | Overrides RequirementsInterface::checkRequirements | |
DestinationBase::getDestinationModule | public | function | Gets the destination module handling the destination data. | Overrides MigrateDestinationInterface::getDestinationModule | 1 |
DestinationBase::rollbackAction | public | function | The rollback action for the last imported item. | Overrides MigrateDestinationInterface::rollbackAction | |
DestinationBase::setRollbackAction | protected | function | For a destination item being updated, set the appropriate rollback action. | ||
DestinationBase::supportsRollback | public | function | Whether the destination can be rolled back or not. | Overrides MigrateDestinationInterface::supportsRollback | |
Entity::$bundles | protected | property | The list of the bundles of this entity type. | ||
Entity::$entityFieldManager | protected | property | The entity field manager. | ||
Entity::$storage | protected | property | The entity storage. | ||
Entity::calculateDependencies | public | function | Calculates dependencies for the configured plugin. | Overrides DependentPluginInterface::calculateDependencies | |
Entity::create | public static | function | Creates an instance of the plugin. | Overrides ContainerFactoryPluginInterface::create | 2 |
Entity::fields | public | function | Returns an array of destination fields. | Overrides MigrateDestinationInterface::fields | 1 |
Entity::getBundle | public | function | Gets the bundle for the row taking into account the default. | ||
Entity::getEntity | protected | function | Creates or loads an entity. | 7 | |
Entity::getEntityId | protected | function | Gets the entity ID of the row. | 2 | |
Entity::getKey | protected | function | Returns a specific entity key. | ||
Entity::processStubRow | protected | function | Populates as much of the stub row as possible. | 1 | |
Entity::rollback | public | function | Delete the specified destination object from the target Drupal. | Overrides DestinationBase::rollback | 2 |
Entity::updateEntity | abstract protected | function | Updates an entity with the new values from row. | 2 | |
Entity::__construct | public | function | Construct a new entity. | Overrides DestinationBase::__construct | 2 |
EntityFieldDefinitionTrait::getDefinitionFromEntity | protected | function | Gets the field definition from a specific entity base field. | ||
EntityFieldDefinitionTrait::getEntityTypeId | protected static | function | Finds the entity type from configuration or plugin ID. | 3 | |
MigrateDestinationInterface::getIds | public | function | Gets the destination IDs. | 11 | |
MigrateDestinationInterface::import | public | function | Import the row. | 11 | |
PluginInspectionInterface::getPluginDefinition | public | function | Gets the definition of the plugin implementation. | 7 | |
PluginInspectionInterface::getPluginId | public | function | Gets the plugin ID of the plugin instance. | 3 |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.