ContentEntityBase::createDuplicate

public ContentEntityBase::createDuplicate()

Creates a duplicate of the entity.

Return value

static A clone of $this with all identifiers unset, so saving it inserts a new entity into the storage system.

Overrides Entity::createDuplicate

File

core/lib/Drupal/Core/Entity/ContentEntityBase.php, line 981

Class

ContentEntityBase
Implements Entity Field API specific enhancements to the Entity class.

Namespace

Drupal\Core\Entity

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public function createDuplicate() {
  if ($this->translations[$this->activeLangcode]['status'] == static::TRANSLATION_REMOVED) {
    throw new \InvalidArgumentException("The entity object refers to a removed translation ({$this->activeLangcode}) and cannot be manipulated.");
  }
 
  $duplicate = clone $this;
  $entity_type = $this->getEntityType();
  $duplicate->{$entity_type->getKey('id')}->value = NULL;
  $duplicate->enforceIsNew();
 
  // Check if the entity type supports UUIDs and generate a new one if so.
  if ($entity_type->hasKey('uuid')) {
    $duplicate->{$entity_type->getKey('uuid')}->value = $this->uuidGenerator()->generate();
  }
 
  // Check whether the entity type supports revisions and initialize it if so.
  if ($entity_type->isRevisionable()) {
    $duplicate->{$entity_type->getKey('revision')}->value = NULL;
  }
 
  return $duplicate;
}
doc_Drupal
2025-01-10 15:47:30
Comments
Leave a Comment

Please login to continue.