diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php index 2b4f9a4..33f6bc3 100644 --- a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php +++ b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php @@ -20,6 +20,7 @@ use Drupal\Core\Entity\EntityStorageException; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Entity\Query\QueryInterface; +use Drupal\Core\Entity\RevisionLogEntityTrait; use Drupal\Core\Entity\Schema\DynamicallyFieldableEntityStorageSchemaInterface; use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\Field\FieldStorageDefinitionInterface; @@ -299,15 +300,14 @@ public function getTableMapping(array $storage_definitions = NULL) { // Make sure the key fields come first in the list of fields. $all_fields = array_merge($key_fields, array_diff($all_fields, $key_fields)); - // Nodes have all three of these fields, while custom blocks only have - // log. - // @todo Provide automatic definitions for revision metadata fields in - // https://www.drupal.org/node/2248983. - $revision_metadata_fields = array_intersect(array( - 'revision_timestamp', - 'revision_uid', - 'revision_log', - ), $all_fields); + // Gather a list of revision metadata field names. + $common_revision_metadata_fields = array_keys(RevisionLogEntityTrait::revisionLogBaseFieldDefinitions($this->entityType)); + + // Nodes and custom blocks use non-standard field names for their revision + // metadata fields. + $common_revision_metadata_fields += ['revision_timestamp', 'revision_uid', 'revision_log']; + + $revision_metadata_fields = array_intersect($common_revision_metadata_fields, $all_fields); $revisionable = $this->entityType->isRevisionable(); $translatable = $this->entityType->isTranslatable();