diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php index d5c7d74f58..6387d70427 100644 --- a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php +++ b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php @@ -28,7 +28,9 @@ class SqlContentEntityStorageSchema implements DynamicallyFieldableEntityStorageSchemaInterface { use DependencySerializationTrait; - use SqlFieldableEntityTypeListenerTrait; + use SqlFieldableEntityTypeListenerTrait { + onFieldableEntityTypeUpdate as traitOnFieldableEntityTypeUpdate; + } /** * The entity manager. @@ -409,6 +411,15 @@ public function onEntityTypeDelete(EntityTypeInterface $entity_type) { $this->deleteEntitySchemaData($entity_type); } + /** + * {@inheritdoc} + */ + public function onFieldableEntityTypeUpdate(EntityTypeInterface $entity_type, EntityTypeInterface $original, array $field_storage_definitions, array $original_field_storage_definitions, array &$sandbox = NULL) { + $this->entityType = $entity_type; + $this->fieldStorageDefinitions = $field_storage_definitions; + $this->traitOnFieldableEntityTypeUpdate($entity_type, $original, $field_storage_definitions, $original_field_storage_definitions, $sandbox); + } + /** * {@inheritdoc} */ diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlFieldableEntityTypeListenerTrait.php b/core/lib/Drupal/Core/Entity/Sql/SqlFieldableEntityTypeListenerTrait.php index 655277b776..0dd808e9c2 100644 --- a/core/lib/Drupal/Core/Entity/Sql/SqlFieldableEntityTypeListenerTrait.php +++ b/core/lib/Drupal/Core/Entity/Sql/SqlFieldableEntityTypeListenerTrait.php @@ -54,8 +54,6 @@ public function onFieldableEntityTypeUpdate(EntityTypeInterface $entity_type, En throw new EntityStorageException('Missing revision_translation_affected field.'); } - $this->fieldStorageDefinitions = $field_storage_definitions; - // If 'progress' is not set, then this will be the first run of the batch. if (!isset($sandbox['progress'])) { $sandbox['original_storage'] = $original_storage; diff --git a/core/modules/system/tests/src/Functional/Entity/Traits/EntityDefinitionTestTrait.php b/core/modules/system/tests/src/Functional/Entity/Traits/EntityDefinitionTestTrait.php index 183df5ddda..2633beb929 100644 --- a/core/modules/system/tests/src/Functional/Entity/Traits/EntityDefinitionTestTrait.php +++ b/core/modules/system/tests/src/Functional/Entity/Traits/EntityDefinitionTestTrait.php @@ -311,7 +311,7 @@ protected function deleteEntityType() { * An entity type definition. */ protected function getUpdatedEntityTypeDefinition($revisionable = FALSE, $translatable = FALSE) { - $entity_type = clone $this->entityManager->getDefinition($this->entityTypeId); + $entity_type = clone $this->entityManager->getDefinition('entity_test_update'); if ($revisionable) { $keys = $entity_type->getKeys(); @@ -362,7 +362,7 @@ protected function getUpdatedEntityTypeDefinition($revisionable = FALSE, $transl * An array of field storage definition objects. */ protected function getUpdatedFieldStorageDefinitions($revisionable = FALSE, $translatable = FALSE) { - $field_storage_definitions = $this->entityManager->getFieldStorageDefinitions($this->entityTypeId); + $field_storage_definitions = $this->entityManager->getFieldStorageDefinitions('entity_test_update'); if ($revisionable) { // The 'langcode' is already available for the 'entity_test_update' entity @@ -371,7 +371,7 @@ protected function getUpdatedFieldStorageDefinitions($revisionable = FALSE, $tra $field_storage_definitions['revision_id'] = BaseFieldDefinition::create('integer') ->setName('revision_id') - ->setTargetEntityTypeId($this->entityTypeId) + ->setTargetEntityTypeId('entity_test_update') ->setTargetBundle(NULL) ->setLabel(new TranslatableMarkup('Revision ID')) ->setReadOnly(TRUE) @@ -379,7 +379,7 @@ protected function getUpdatedFieldStorageDefinitions($revisionable = FALSE, $tra $field_storage_definitions['revision_default'] = BaseFieldDefinition::create('boolean') ->setName('revision_default') - ->setTargetEntityTypeId($this->entityTypeId) + ->setTargetEntityTypeId('entity_test_update') ->setTargetBundle(NULL) ->setLabel(new TranslatableMarkup('Default revision')) ->setDescription(new TranslatableMarkup('A flag indicating whether this was a default revision when it was saved.')) @@ -396,7 +396,7 @@ protected function getUpdatedFieldStorageDefinitions($revisionable = FALSE, $tra $field_storage_definitions['default_langcode'] = BaseFieldDefinition::create('boolean') ->setName('default_langcode') - ->setTargetEntityTypeId($this->entityTypeId) + ->setTargetEntityTypeId('entity_test_update') ->setTargetBundle(NULL) ->setLabel(new TranslatableMarkup('Default translation')) ->setDescription(new TranslatableMarkup('A flag indicating whether this is the default translation.')) @@ -408,7 +408,7 @@ protected function getUpdatedFieldStorageDefinitions($revisionable = FALSE, $tra if ($revisionable && $translatable) { $field_storage_definitions['revision_translation_affected'] = BaseFieldDefinition::create('boolean') ->setName('revision_translation_affected') - ->setTargetEntityTypeId($this->entityTypeId) + ->setTargetEntityTypeId('entity_test_update') ->setTargetBundle(NULL) ->setLabel(new TranslatableMarkup('Revision translation affected')) ->setDescription(new TranslatableMarkup('Indicates if the last edit of a translation belongs to current revision.'))