abstract class ContentEntityStorageBase extends EntityStorageBase implements ContentEntityStorageInterface, DynamicallyFieldableEntityStorageInterface (View source)

Base class for content entity storage handlers.

Traits

Wrapper methods for \Drupal\Core\StringTranslation\TranslationInterface.

Provides dependency injection friendly methods for serialization.

Properties

protected TranslationInterface $stringTranslation

The string translation service.

from  StringTranslationTrait
protected array $_serviceIds

An array of service IDs keyed by property name used for serialization.

from  DependencySerializationTrait
protected array $_entityStorages

An array of entity type IDs keyed by the property name of their storages.

from  DependencySerializationTrait
protected ModuleHandlerInterface $moduleHandler

The module handler to invoke hooks on.

from  EntityHandlerBase
protected string $entityTypeId

Entity type ID for this storage.

from  EntityStorageBase
protected EntityTypeInterface $entityType

Information about the entity type.

from  EntityStorageBase
protected string $idKey

Name of the entity's ID field in the entity database table.

from  EntityStorageBase
protected string $uuidKey

Name of entity's UUID database table field, if it supports UUIDs.

from  EntityStorageBase
protected string $langcodeKey

The name of the entity langcode property.

from  EntityStorageBase
protected UuidInterface $uuidService

The UUID service.

from  EntityStorageBase
protected string $entityClass

Name of the entity class.

from  EntityStorageBase
protected MemoryCacheInterface $memoryCache

The memory cache.

from  EntityStorageBase
protected string $memoryCacheTag

The memory cache cache tag.

from  EntityStorageBase
protected string|bool $bundleKey

The entity bundle key.

protected EntityFieldManagerInterface $entityFieldManager

The entity field manager service.

protected EntityTypeBundleInfoInterface $entityTypeBundleInfo

The entity bundle info.

protected CacheBackendInterface $cacheBackend

Cache backend.

protected array $latestRevisionIds

Stores the latest revision IDs for entities.

Methods

t(string $string, array $args = [], array $options = [])

Translates a string to the current language or to a given language.

formatPlural($count, $singular, $plural, array $args = [], array $options = [])

Formats a string containing a count of items.

getNumberOfPlurals($langcode = NULL)

Returns the number of plurals supported by a given language.

getStringTranslation()

Gets the string translation service.

$this
setStringTranslation(TranslationInterface $translation)

Sets the string translation service to use.

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

moduleHandler()

Gets the module handler.

$this
setModuleHandler(ModuleHandlerInterface $module_handler)

Sets the module handler for this handler.

__construct(EntityTypeInterface $entity_type, EntityFieldManagerInterface $entity_field_manager, CacheBackendInterface $cache, MemoryCacheInterface $memory_cache, EntityTypeBundleInfoInterface $entity_type_bundle_info)

Constructs a ContentEntityStorageBase object.

string
getEntityTypeId()

Gets the entity type ID.

getEntityType()

Gets the entity type definition.

string
buildCacheId(int $id)

Builds the cache ID for the passed in entity ID.

loadUnchanged(mixed $id)

Loads an unchanged entity from the database.

resetCache(array $ids = NULL)

Resets the entity cache.

getFromStaticCache(array $ids)

Gets entities from the static cache.

setStaticCache(array $entities)

Stores entities in the static entity cache.

invokeHook(string $hook, EntityInterface $entity)

Invokes a hook on behalf of the entity.

create(array $values = [])

Constructs a new entity object, without permanently saving it.

doCreate(array $values)

Performs storage-specific creation of entities.

load(mixed $id)

Loads one entity.

loadMultiple(array $ids = NULL)

Loads one or more entities.

doLoadMultiple(array $ids = NULL)

Performs storage-specific loading of entities.

preLoad(array $ids = NULL)

Gathers entities from a 'preload' step.

postLoad(array $entities)

Attaches data to entities upon loading.

mapFromStorageRecords(array $records)

Maps from storage records to entity objects.

bool
has(int|string $id, EntityInterface $entity)

Determines if this entity already exists in storage.

delete(array $entities)

Deletes permanently saved entities.

doDelete(EntityInterface[] $entities)

Performs storage-specific entity deletion.

SAVED_NEW
save(EntityInterface $entity)

Saves the entity permanently.

int|string
doPreSave(EntityInterface $entity)

Performs presave entity processing.

bool|int
doSave(int|string $id, EntityInterface $entity)

Performs storage-specific saving of the entity.

doPostSave(EntityInterface $entity, bool $update)

Performs post save entity processing.

restore(EntityInterface $entity)

Restores a previously saved entity.

buildPropertyQuery(QueryInterface $entity_query, array $values)

Builds an entity query.

loadByProperties(array $values = [])

Load entities by their property values.

bool
hasData()

Determines if the storage contains any data.

getQuery(string $conjunction = 'AND')

Gets an entity query instance.

getAggregateQuery(string $conjunction = 'AND')

Gets an aggregated query instance.

string
getQueryServiceName()

Gets the name of the service for the query for this entity storage.

createInstance(ContainerInterface $container, EntityTypeInterface $entity_type)

Instantiates a new instance of this entity handler.

createWithSampleValues(string|bool $bundle = FALSE, array $values = [])

Creates an entity with sample field values.

initFieldValues(ContentEntityInterface $entity, array $values = [], array $field_names = [])

Initializes field values.

bool
isAnyRevisionTranslated(TranslatableInterface $entity)

Checks whether any entity revision is translated.

bool
isAnyStoredRevisionTranslated(TranslatableInterface $entity)

Checks whether any stored entity revision is translated.

createTranslation(ContentEntityInterface $entity, string $langcode, array $values = [])

Constructs a new entity translation object, without permanently saving it.

createRevision(RevisionableInterface $entity, bool $default = TRUE, $keep_untranslatable_fields = NULL)

Creates a new revision starting off from the specified entity object.

array
getRevisionTranslationMergeSkippedFieldNames()

Returns an array of field names to skip when merging revision translations.

int|string|null
getLatestRevisionId(int|string $entity_id)

Returns the latest revision identifier for an entity.

int|string|null
getLatestTranslationAffectedRevisionId(int|string $entity_id, string $langcode)

Returns the latest revision affecting the specified translation.

onFieldStorageDefinitionCreate(FieldStorageDefinitionInterface $storage_definition)

Reacts to the creation of a field storage definition.

onFieldStorageDefinitionUpdate(FieldStorageDefinitionInterface $storage_definition, FieldStorageDefinitionInterface $original)

Reacts to the update of a field storage definition.

onFieldStorageDefinitionDelete(FieldStorageDefinitionInterface $storage_definition)

Reacts to the deletion of a field storage definition.

onFieldDefinitionCreate(FieldDefinitionInterface $field_definition)

Reacts to the creation of a field.

onFieldDefinitionUpdate(FieldDefinitionInterface $field_definition, FieldDefinitionInterface $original)

Reacts to the update of a field.

onFieldDefinitionDelete(FieldDefinitionInterface $field_definition)

Reacts to the deletion of a field.

int
purgeFieldData(FieldDefinitionInterface $field_definition, int $batch_size)

Purges a batch of field data.

readFieldItemsToPurge(FieldDefinitionInterface $field_definition, $batch_size)

Reads values to be purged for a single field.

purgeFieldItems(ContentEntityInterface $entity, FieldDefinitionInterface $field_definition)

Removes field items from storage per entity during purge.

finalizePurge(FieldStorageDefinitionInterface $storage_definition)

Performs final cleanup after all data of a field has been purged.

loadRevision(int|string $revision_id)

Load a specific entity revision.

loadMultipleRevisions(array $revision_ids)

Loads multiple entity revisions.

doLoadMultipleRevisionsFieldItems(array $revision_ids)

Actually loads revision field item values from the storage.

doSaveFieldItems(ContentEntityInterface $entity, array $names = [])

Writes entity field values to the storage.

doDeleteFieldItems(ContentEntityInterface[] $entities)

Deletes entity field values from the storage.

deleteRevision(int $revision_id)

Delete a specific entity revision.

doDeleteRevisionFieldItems(ContentEntityInterface $revision)

Deletes field values of an entity revision from the storage.

invokeTranslationHooks(ContentEntityInterface $entity)

Checks translation statuses and invoke the related hooks if needed.

invokeStorageLoadHook(array $entities)

Invokes hook_entity_storage_load().

array
invokeFieldMethod(string $method, ContentEntityInterface $entity)

Invokes a method on the Field objects within an entity.

invokeFieldPostSave(ContentEntityInterface $entity, bool $update)

Invokes the post save method on the Field objects within an entity.

bool
hasFieldValueChanged(FieldDefinitionInterface $field_definition, ContentEntityInterface $entity, ContentEntityInterface $original)

Checks whether the field values changed compared to the original entity.

populateAffectedRevisionTranslations(ContentEntityInterface $entity)

Populates the affected flag for all the revision translations.

array
cleanIds(array $ids, string $entity_key = 'id')

Ensures integer entity key values are valid.

getFromPersistentCache(array $ids = NULL)

Gets entities from the persistent cache backend.

setPersistentCache(ContentEntityInterface[] $entities)

Stores entities in the persistent cache backend.

Details

protected TranslatableMarkup t(string $string, array $args = [], array $options = [])

Translates a string to the current language or to a given language.

See \Drupal\Core\StringTranslation\TranslatableMarkup::__construct() for important security information and usage guidelines.

In order for strings to be localized, make them available in one of the ways supported by the

Parameters

string $string

A string containing the English text to translate.

array $args

(optional) An associative array of replacements to make after translation. Based on the first character of the key, the value is escaped and/or themed. See \Drupal\Component\Render\FormattableMarkup::placeholderFormat() for details.

array $options

(optional) An associative array of additional options, with the following elements:

  • 'langcode' (defaults to the current language): A language code, to translate to a language other than what is used to display the page.
  • 'context' (defaults to the empty context): The context the source string belongs to. See the @link i18n Internationalization topic @endlink for more information about string contexts.

Return Value

TranslatableMarkup

An object that, when cast to a string, returns the translated string.

See also

FormattableMarkup::placeholderFormat
TranslatableMarkup::__construct

protected formatPlural($count, $singular, $plural, array $args = [], array $options = [])

Formats a string containing a count of items.

Parameters

$count
$singular
$plural
array $args
array $options

See also

TranslationInterface::formatPlural

protected getNumberOfPlurals($langcode = NULL)

Returns the number of plurals supported by a given language.

Parameters

$langcode

See also

PluralFormulaInterface::getNumberOfPlurals

protected TranslationInterface getStringTranslation()

Gets the string translation service.

Return Value

TranslationInterface

The string translation service.

$this setStringTranslation(TranslationInterface $translation)

Sets the string translation service to use.

Parameters

TranslationInterface $translation

The string translation service.

Return Value

$this

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

protected ModuleHandlerInterface moduleHandler()

Gets the module handler.

Return Value

ModuleHandlerInterface

The module handler.

$this setModuleHandler(ModuleHandlerInterface $module_handler)

Sets the module handler for this handler.

Parameters

ModuleHandlerInterface $module_handler

The module handler.

Return Value

$this

__construct(EntityTypeInterface $entity_type, EntityFieldManagerInterface $entity_field_manager, CacheBackendInterface $cache, MemoryCacheInterface $memory_cache, EntityTypeBundleInfoInterface $entity_type_bundle_info)

Constructs a ContentEntityStorageBase object.

Parameters

EntityTypeInterface $entity_type

The entity type definition.

EntityFieldManagerInterface $entity_field_manager

The entity field manager.

CacheBackendInterface $cache

The cache backend to be used.

MemoryCacheInterface $memory_cache

The memory cache.

EntityTypeBundleInfoInterface $entity_type_bundle_info

The entity type bundle info.

string getEntityTypeId()

Gets the entity type ID.

Return Value

string

The entity type ID.

EntityTypeInterface getEntityType()

Gets the entity type definition.

Return Value

EntityTypeInterface

Entity type definition.

protected string buildCacheId(int $id)

Builds the cache ID for the passed in entity ID.

Parameters

int $id

Entity ID for which the cache ID should be built.

Return Value

string

Cache ID that can be passed to the cache backend.

EntityInterface|null loadUnchanged(mixed $id)

Loads an unchanged entity from the database.

Parameters

mixed $id

The ID of the entity to load.

Return Value

EntityInterface|null

The unchanged entity, or NULL if the entity cannot be loaded.

resetCache(array $ids = NULL)

Resets the entity cache.

Content entities have both an in-memory static cache and a persistent cache. Use this method to clear all caches. To clear just the in-memory cache, use the 'entity.memory_cache' service.

Parameters

array $ids

(optional) If specified, the cache is reset for the entities with the given ids only.

protected EntityInterface[] getFromStaticCache(array $ids)

Gets entities from the static cache.

Parameters

array $ids

If not empty, return entities that match these IDs.

Return Value

EntityInterface[]

Array of entities from the entity cache, keyed by entity ID.

protected setStaticCache(array $entities)

Stores entities in the static entity cache.

Parameters

array $entities

Entities to store in the cache.

protected invokeHook(string $hook, EntityInterface $entity)

Invokes a hook on behalf of the entity.

Parameters

string $hook

One of 'create', 'presave', 'insert', 'update', 'predelete', 'delete', or 'revision_delete'.

EntityInterface $entity

The entity object.

EntityInterface create(array $values = [])

Constructs a new entity object, without permanently saving it.

Parameters

array $values

(optional) An array of values to set, keyed by property name. If the entity type has bundles, the bundle key has to be specified.

Return Value

EntityInterface

A new entity object.

protected EntityInterface doCreate(array $values)

Performs storage-specific creation of entities.

Parameters

array $values

An array of values to set, keyed by property name.

Return Value

EntityInterface

EntityInterface|null load(mixed $id)

Loads one entity.

Parameters

mixed $id

The ID of the entity to load.

Return Value

EntityInterface|null

An entity object. NULL if no matching entity is found.

EntityInterface[] loadMultiple(array $ids = NULL)

Loads one or more entities.

Parameters

array $ids

An array of entity IDs, or NULL to load all entities.

Return Value

EntityInterface[]

An array of entity objects indexed by their IDs. Returns an empty array if no matching entities are found.

abstract protected EntityInterface[] doLoadMultiple(array $ids = NULL)

Performs storage-specific loading of entities.

Override this method to add custom functionality directly after loading. This is always called, while self::postLoad() is only called when there are actual results.

Parameters

array $ids

(optional) An array of entity IDs, or NULL to load all entities.

Return Value

EntityInterface[]

Associative array of entities, keyed on the entity ID.

protected EntityInterface[] preLoad(array $ids = NULL)

Gathers entities from a 'preload' step.

Parameters

array $ids

If not empty, return entities that match these IDs. IDs that were found will be removed from the list.

Return Value

EntityInterface[]

Associative array of entities, keyed by the entity ID.

protected postLoad(array $entities)

Attaches data to entities upon loading.

Parameters

array $entities

Associative array of query results, keyed on the entity ID.

protected EntityInterface[] mapFromStorageRecords(array $records)

Maps from storage records to entity objects.

Parameters

array $records

Associative array of query results, keyed on the entity ID.

Return Value

EntityInterface[]

An array of entity objects implementing the EntityInterface.

abstract protected bool has(int|string $id, EntityInterface $entity)

Determines if this entity already exists in storage.

Parameters

int|string $id

The original entity ID.

EntityInterface $entity

The entity being saved.

Return Value

bool

delete(array $entities)

Deletes permanently saved entities.

Parameters

array $entities

An array of entity objects to delete.

Exceptions

EntityStorageException

protected doDelete(EntityInterface[] $entities)

Performs storage-specific entity deletion.

Parameters

EntityInterface[] $entities

An array of entity objects to delete.

SAVED_NEW save(EntityInterface $entity)

Saves the entity permanently.

Parameters

EntityInterface $entity

The entity to save.

Return Value

SAVED_NEW

or SAVED_UPDATED is returned depending on the operation performed.

Exceptions

EntityStorageException

protected int|string doPreSave(EntityInterface $entity)

Performs presave entity processing.

Parameters

EntityInterface $entity

The saved entity.

Return Value

int|string

The processed entity identifier.

Exceptions

EntityStorageException

protected bool|int doSave(int|string $id, EntityInterface $entity)

Performs storage-specific saving of the entity.

Parameters

int|string $id

The original entity ID.

EntityInterface $entity

The entity to save.

Return Value

bool|int

If the record insert or update failed, returns FALSE. If it succeeded, returns SAVED_NEW or SAVED_UPDATED, depending on the operation performed.

protected doPostSave(EntityInterface $entity, bool $update)

Performs post save entity processing.

Parameters

EntityInterface $entity

The saved entity.

bool $update

Specifies whether the entity is being updated or created.

restore(EntityInterface $entity)

Restores a previously saved entity.

Note that the entity is assumed to be in a valid state for the storage, so the restore process does not invoke any hooks, nor does it perform any pre or post-save operations.

Parameters

EntityInterface $entity

The entity to restore.

Exceptions

EntityStorageException

protected buildPropertyQuery(QueryInterface $entity_query, array $values)

Builds an entity query.

Parameters

QueryInterface $entity_query

EntityQuery instance.

array $values

An associative array of properties of the entity, where the keys are the property names and the values are the values those properties must have.

EntityInterface[] loadByProperties(array $values = [])

Load entities by their property values.

Parameters

array $values

An associative array where the keys are the property names and the values are the values those properties must have.

Return Value

EntityInterface[]

An array of entity objects indexed by their ids.

bool hasData()

Determines if the storage contains any data.

Return Value

bool

TRUE if the storage contains data, FALSE if not.

QueryInterface getQuery(string $conjunction = 'AND')

Gets an entity query instance.

Parameters

string $conjunction

(optional) The logical operator for the query, either:

  • AND: all of the conditions on the query need to match.
  • OR: at least one of the conditions on the query need to match.

Return Value

QueryInterface

The query instance.

QueryAggregateInterface getAggregateQuery(string $conjunction = 'AND')

Gets an aggregated query instance.

Parameters

string $conjunction

(optional) The logical operator for the query, either:

  • AND: all of the conditions on the query need to match.
  • OR: at least one of the conditions on the query need to match.

Return Value

QueryAggregateInterface

The aggregated query object that can query the given entity type.

abstract protected string getQueryServiceName()

Gets the name of the service for the query for this entity storage.

Return Value

string

The name of the service for the query for this entity storage.

static EntityHandlerInterface createInstance(ContainerInterface $container, EntityTypeInterface $entity_type)

Instantiates a new instance of this entity handler.

This is a factory method that returns a new instance of this object. The factory should pass any needed dependencies into the constructor of this object, but not the container itself. Every call to this method must return a new instance of this object; that is, it may not implement a singleton.

Parameters

ContainerInterface $container

The service container this object should use.

EntityTypeInterface $entity_type

The entity type definition.

Return Value

EntityHandlerInterface

A new instance of the entity handler.

FieldableEntityInterface createWithSampleValues(string|bool $bundle = FALSE, array $values = [])

Creates an entity with sample field values.

Parameters

string|bool $bundle

(optional) The entity bundle.

array $values

(optional) Any default values to use during generation.

Return Value

FieldableEntityInterface

A fieldable content entity.

Exceptions

EntityStorageException

protected initFieldValues(ContentEntityInterface $entity, array $values = [], array $field_names = [])

Initializes field values.

Parameters

ContentEntityInterface $entity

An entity object.

array $values

(optional) An associative array of initial field values keyed by field name. If none is provided default values will be applied.

array $field_names

(optional) An associative array of field names to be initialized. If none is provided all fields will be initialized.

protected bool isAnyRevisionTranslated(TranslatableInterface $entity)

Checks whether any entity revision is translated.

Parameters

TranslatableInterface $entity

The entity object to be checked.

Return Value

bool

TRUE if the entity has at least one translation in any revision, FALSE otherwise.

See also

TranslatableInterface::getTranslationLanguages
ContentEntityStorageBase::isAnyStoredRevisionTranslated

protected bool isAnyStoredRevisionTranslated(TranslatableInterface $entity)

Checks whether any stored entity revision is translated.

A revisionable entity can have translations in a pending revision, hence the default revision may appear as not translated. This determines whether the entity has any translation in the storage and thus should be considered as multilingual.

Parameters

TranslatableInterface $entity

The entity object to be checked.

Return Value

bool

TRUE if the entity has at least one translation in any revision, FALSE otherwise.

See also

TranslatableInterface::getTranslationLanguages
ContentEntityStorageBase::isAnyRevisionTranslated

ContentEntityInterface createTranslation(ContentEntityInterface $entity, string $langcode, array $values = [])

Constructs a new entity translation object, without permanently saving it.

Parameters

ContentEntityInterface $entity

The entity object being translated.

string $langcode

The translation language code.

array $values

(optional) An associative array of initial field values keyed by field name. If none is provided default values will be applied.

Return Value

ContentEntityInterface

Another instance of the specified entity object class with the specified active language and initial values.

RevisionableInterface createRevision(RevisionableInterface $entity, bool $default = TRUE, $keep_untranslatable_fields = NULL)

Creates a new revision starting off from the specified entity object.

Parameters

RevisionableInterface $entity

The revisionable entity object being modified.

bool $default

(optional) Whether the new revision should be marked as default. Defaults to TRUE.

$keep_untranslatable_fields

Return Value

RevisionableInterface

A new entity revision object.

protected array getRevisionTranslationMergeSkippedFieldNames()

Returns an array of field names to skip when merging revision translations.

Return Value

array

An array of field names.

int|string|null getLatestRevisionId(int|string $entity_id)

Returns the latest revision identifier for an entity.

Parameters

int|string $entity_id

The entity identifier.

Return Value

int|string|null

The latest revision identifier or NULL if no revision could be found.

int|string|null getLatestTranslationAffectedRevisionId(int|string $entity_id, string $langcode)

Returns the latest revision affecting the specified translation.

Parameters

int|string $entity_id

The entity identifier.

string $langcode

The language code of the translation.

Return Value

int|string|null

A revision ID or NULL if no revision affecting the specified translation could be found.

onFieldStorageDefinitionCreate(FieldStorageDefinitionInterface $storage_definition)

Reacts to the creation of a field storage definition.

Parameters

FieldStorageDefinitionInterface $storage_definition

The definition being created.

onFieldStorageDefinitionUpdate(FieldStorageDefinitionInterface $storage_definition, FieldStorageDefinitionInterface $original)

Reacts to the update of a field storage definition.

Parameters

FieldStorageDefinitionInterface $storage_definition

The field being updated.

FieldStorageDefinitionInterface $original

The original storage definition; i.e., the definition before the update.

Exceptions

FieldStorageDefinitionUpdateForbiddenException

onFieldStorageDefinitionDelete(FieldStorageDefinitionInterface $storage_definition)

Reacts to the deletion of a field storage definition.

Parameters

FieldStorageDefinitionInterface $storage_definition

The field being deleted.

onFieldDefinitionCreate(FieldDefinitionInterface $field_definition)

Reacts to the creation of a field.

Parameters

FieldDefinitionInterface $field_definition

The field definition created.

onFieldDefinitionUpdate(FieldDefinitionInterface $field_definition, FieldDefinitionInterface $original)

Reacts to the update of a field.

Parameters

FieldDefinitionInterface $field_definition

The field definition being updated.

FieldDefinitionInterface $original

The original field definition; i.e., the definition before the update.

onFieldDefinitionDelete(FieldDefinitionInterface $field_definition)

Reacts to the deletion of a field.

Stored values should not be wiped at once, but marked as 'deleted' so that they can go through a proper purge process later on.

Parameters

FieldDefinitionInterface $field_definition

The field definition being deleted.

int purgeFieldData(FieldDefinitionInterface $field_definition, int $batch_size)

Purges a batch of field data.

Parameters

FieldDefinitionInterface $field_definition

The deleted field whose data is being purged.

int $batch_size

The maximum number of field data records to purge before returning, relating to the count of field data records returned by \Drupal\Core\Entity\FieldableEntityStorageInterface::countFieldData().

Return Value

int

The number of field data records that have been purged.

abstract protected FieldItemListInterface[] readFieldItemsToPurge(FieldDefinitionInterface $field_definition, $batch_size)

Reads values to be purged for a single field.

This method is called during field data purge, on fields for which onFieldDefinitionDelete() has previously run.

Parameters

FieldDefinitionInterface $field_definition

The field definition.

$batch_size

The maximum number of field data records to purge before returning.

Return Value

FieldItemListInterface[]

An array of field item lists, keyed by entity revision id.

abstract protected purgeFieldItems(ContentEntityInterface $entity, FieldDefinitionInterface $field_definition)

Removes field items from storage per entity during purge.

Parameters

ContentEntityInterface $entity

The entity revision, whose values are being purged.

FieldDefinitionInterface $field_definition

The field whose values are bing purged.

finalizePurge(FieldStorageDefinitionInterface $storage_definition)

Performs final cleanup after all data of a field has been purged.

Parameters

FieldStorageDefinitionInterface $storage_definition

The field storage being purged.

EntityInterface|null loadRevision(int|string $revision_id)

Load a specific entity revision.

Parameters

int|string $revision_id

The revision id.

Return Value

EntityInterface|null

The specified entity revision or NULL if not found.

RevisionableInterface[] loadMultipleRevisions(array $revision_ids)

Loads multiple entity revisions.

Parameters

array $revision_ids

An array of revision IDs to load.

Return Value

RevisionableInterface[]

An array of entity revisions keyed by their revision ID, or an empty array if none found.

abstract protected EntityInterface[] doLoadMultipleRevisionsFieldItems(array $revision_ids)

Actually loads revision field item values from the storage.

Parameters

array $revision_ids

An array of revision identifiers.

Return Value

EntityInterface[]

The specified entity revisions or an empty array if none are found.

abstract protected doSaveFieldItems(ContentEntityInterface $entity, array $names = [])

Writes entity field values to the storage.

This method is responsible for allocating entity and revision identifiers and updating the entity object with their values.

Parameters

ContentEntityInterface $entity

The entity object.

array $names

(optional) The name of the fields to be written to the storage. If an empty value is passed all field values are saved.

abstract protected doDeleteFieldItems(ContentEntityInterface[] $entities)

Deletes entity field values from the storage.

Parameters

ContentEntityInterface[] $entities

An array of entity objects to be deleted.

deleteRevision(int $revision_id)

Delete a specific entity revision.

A revision can only be deleted if it's not the currently active one.

Parameters

int $revision_id

The revision id.

abstract protected doDeleteRevisionFieldItems(ContentEntityInterface $revision)

Deletes field values of an entity revision from the storage.

Parameters

ContentEntityInterface $revision

An entity revision object to be deleted.

protected invokeTranslationHooks(ContentEntityInterface $entity)

Checks translation statuses and invoke the related hooks if needed.

Parameters

ContentEntityInterface $entity

The entity being saved.

protected invokeStorageLoadHook(array $entities)

Invokes hook_entity_storage_load().

Parameters

array $entities

List of entities, keyed on the entity ID.

protected array invokeFieldMethod(string $method, ContentEntityInterface $entity)

Invokes a method on the Field objects within an entity.

Any argument passed will be forwarded to the invoked method.

Parameters

string $method

The name of the method to be invoked.

ContentEntityInterface $entity

The entity object.

Return Value

array

A multidimensional associative array of results, keyed by entity translation language code and field name.

protected invokeFieldPostSave(ContentEntityInterface $entity, bool $update)

Invokes the post save method on the Field objects within an entity.

Parameters

ContentEntityInterface $entity

The entity object.

bool $update

Specifies whether the entity is being updated or created.

protected bool hasFieldValueChanged(FieldDefinitionInterface $field_definition, ContentEntityInterface $entity, ContentEntityInterface $original)

Checks whether the field values changed compared to the original entity.

Parameters

FieldDefinitionInterface $field_definition

Field definition of field to compare for changes.

ContentEntityInterface $entity

Entity to check for field changes.

ContentEntityInterface $original

Original entity to compare against.

Return Value

bool

True if the field value changed from the original entity.

protected populateAffectedRevisionTranslations(ContentEntityInterface $entity)

Populates the affected flag for all the revision translations.

Parameters

ContentEntityInterface $entity

An entity object being saved.

protected array cleanIds(array $ids, string $entity_key = 'id')

Ensures integer entity key values are valid.

The identifier sanitization provided by this method has been introduced as Drupal used to rely on the database to facilitate this, which worked correctly with MySQL but led to errors with other DBMS such as PostgreSQL.

Parameters

array $ids

The entity key values to verify.

string $entity_key

(optional) The entity key to sanitize values for. Defaults to 'id'.

Return Value

array

The sanitized list of entity key values.

protected ContentEntityInterface[] getFromPersistentCache(array $ids = NULL)

Gets entities from the persistent cache backend.

Parameters

array $ids

If not empty, return entities that match these IDs. IDs that were found will be removed from the list.

Return Value

ContentEntityInterface[]

Array of entities from the persistent cache.

protected setPersistentCache(ContentEntityInterface[] $entities)

Stores entities in the persistent cache backend.

Parameters

ContentEntityInterface[] $entities

Entities to store in the cache.