You are here

class ContentEntityStorage in MongoDB 8

Hierarchy

Expanded class hierarchy of ContentEntityStorage

7 files declare their use of ContentEntityStorage
FeedStorage.php in mongodb_aggregator/src/Entity/FeedStorage.php
Contains Drupal\mongodb\Entity\FeedStorageController.
ItemStorage.php in mongodb_aggregator/src/Entity/ItemStorage.php
Contains \Drupal\aggregator\ItemStorage.
MongodbCommentStorage.php in mongodb_comment/src/MongodbCommentStorage.php
Contains \Drupal\mongodb_comment\MongodbCommentStorage.
MongodbFileStorage.php in mongodb_file/src/MongodbFileStorage.php
Contains \Drupal\mongodb_file\MongodbFileStorage.
MongodbNodeStorage.php in mongodb_node/src/MongodbNodeStorage.php
Contains \Drupal\node\MongodbNodeStorage.

... See full list

File

src/Entity/ContentEntityStorage.php, line 23
Contains Drupal\mongodb\Entity\ContentEntityStorage.

Namespace

Drupal\mongodb\Entity
View source
class ContentEntityStorage extends ContentEntityStorageBase {

  /**
   * @var \Drupal\mongoDb\MongoCollectionFactory $mongo
   */
  protected $mongo;

  /**
   * @var EntityManagerInterface
   */
  protected $entityManager;

  /**
   * Constructs a DatabaseStorageController object.
   *
   * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
   *   The entity type definition.
   * @param \Drupal\Core\Database\Connection $database
   *   The database connection to be used.
   */
  public function __construct(EntityTypeInterface $entity_type, MongoCollectionFactory $mongo, EntityManagerInterface $entity_manager) {
    parent::__construct($entity_type);
    $this->mongo = $mongo;
    $this->entityManager = $entity_manager;
  }

  /**
   * {@inheritdoc}
   */
  public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
    return new static($entity_type, $container
      ->get('mongo'), $container
      ->get('entity.manager'));
  }

  /**
   * Load a specific entity revision.
   *
   * @param int $revision_id
   *   The revision id.
   *
   * @return \Drupal\Core\Entity\EntityInterface|false
   *   The specified entity revision or FALSE if not found.
   */
  public function loadRevision($revision_id) {
    $revisions = $this
      ->loadFromMongo('entity_revision', [
      '_id' => (int) $revision_id,
    ]);
    return isset($revisions[$revision_id]) ? $revisions[$revision_id] : FALSE;
  }

  /**
   * Loads entity records from a MongoDB collections.
   *
   * @param string $prefix
   * @param array $find
   * @return array
   */
  protected function loadFromMongo($prefix, array $find) {
    $collection = $this->mongo
      ->get($prefix . '.' . $this->entityType
      ->id());
    $return = array();
    $langcode_key = $this->entityType
      ->getKey('langcode');
    $default_langcode_key = $this->entityType
      ->getKey('default_langcode');
    $revision_key = $this->entityType
      ->getKey('revision');
    $translatable = $this->entityType
      ->isTranslatable();
    foreach ($collection
      ->find($find) as $record) {
      $data = array();
      $definitions = $this->entityManager
        ->getFieldDefinitions($this->entityTypeId, $record['bundle']);
      $this
        ->mongoToEntityData($data, $record, $definitions, $translatable, $default_langcode_key, $langcode_key);
      if ($prefix == 'entity_revision') {

        // Add non-revisionable data from the current revision.
        $entity_record = $this->mongo
          ->get('entity.' . $this->entityType
          ->id())
          ->findOne([
          '_id' => $record['entity_id'],
        ]);
        $definitions = array_filter($this->entityManager
          ->getFieldStorageDefinitions($this->entityTypeId), function (FieldStorageDefinitionInterface $definition) use ($revision_key) {
          return !$definition
            ->isRevisionable() && $definition
            ->getName() != $revision_key;
        });
        $this
          ->mongoToEntityData($data, $entity_record, $definitions, $translatable, $default_langcode_key, $langcode_key);
        if ($entity_record['values'][0][$this->entityType
          ->getKey('revision')][0]['value'] != $record['_id']) {
          $data['isDefaultRevision'][LanguageInterface::LANGCODE_DEFAULT] = FALSE;
        }
      }
      $return[$record['_id']] = new $this->entityClass($data, $this->entityTypeId, $record['bundle'], $record['translations']);
    }
    return $return;
  }

  /**
   * @param array $data
   *   The data to be passed to the entity constructor.
   * @param array $record
   *   The record as read from MongoDB.
   * @param array $definitions
   *   Field definition array.
   * @param bool $translatable
   *   Whether the entity is translatable.
   * @param string $default_langcode_key
   *   The default_langcode key, typically default_langcode.
   * @param $langcode_key
   *   The langcode key, typucally langcode.
   */
  protected function mongoToEntityData(array &$data, array $record, array $definitions, $translatable, $default_langcode_key, $langcode_key) {
    foreach ($record['values'] as $translation) {
      foreach ($definitions as $field_name => $definition) {
        if (isset($translation[$field_name])) {
          $index = $translatable && !$translation[$default_langcode_key][0]['value'] ? $translation[$langcode_key][0]['value'] : LanguageInterface::LANGCODE_DEFAULT;
          $data[$field_name][$index] = $translation[$field_name];
        }
      }
    }
  }

  /**
   * Delete a specific entity revision.
   *
   * A revision can only be deleted if it's not the currently active one.
   *
   * @param int $revision_id
   *   The revision id.
   */
  public function deleteRevision($revision_id) {
    $this->mongo
      ->get('entity_revision.' . $this->entityType
      ->id())
      ->remove(array(
      '_id' => $revision_id,
    ));
  }

  /**
   * Deletes permanently saved entities.
   *
   * @param array $entities
   *   An array of entity objects to delete.
   *
   * @throws \Drupal\Core\Entity\EntityStorageException
   *   In case of failures, an exception is thrown.
   */
  public function doDelete($entities) {
    if (!$entities) {

      // If no IDs or invalid IDs were passed, do nothing.
      return;
    }
    $ids = array(
      '$in' => array_keys($entities),
    );
    $this->mongo
      ->get('entity.' . $this->entityType
      ->id())
      ->remove(array(
      '_id' => $ids,
    ));
    $this->mongo
      ->get('entity_revision.' . $this->entityType
      ->id())
      ->remove(array(
      'entity_id' => $ids,
    ));
  }

  /**
   * {@inheritdoc}
   */
  protected function doSave($id, EntityInterface $entity) {

    /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
    $id = $entity
      ->id();
    $is_new = FALSE;
    if ($entity
      ->isNew() || $id === NULL || $id === '') {
      $is_new = TRUE;
      if ($id === NULL || $id === '') {
        $entity
          ->get($this->entityType
          ->getKey('id'))->value = $this
          ->nextId('entity', $id);
      }
    }
    if ($this->entityType
      ->isRevisionable()) {
      $revision_key = $this->entityType
        ->getKey('revision');
      if ($entity
        ->isNewRevision() && !$entity
        ->getRevisionId()) {
        $entity
          ->get($revision_key)->value = $this
          ->nextId('entity_revision');
      }
    }
    $this
      ->invokeFieldMethod($is_new ? 'insert' : 'update', $entity);
    $data = $this
      ->getDataToSave($entity);
    if ($entity
      ->isDefaultRevision()) {
      $criteria['_id'] = $entity
        ->id();
      if ($this->entityType
        ->isRevisionable()) {
        $data['revision_id'] = $entity
          ->get($revision_key)->value;
      }
      $collection = $this
        ->mongoCollection($entity, 'entity');
      $collection
        ->update($criteria, $criteria + $data, [
        'upsert' => TRUE,
      ]);
      $return = $collection->db
        ->lastError();
    }
    if ($this->entityType
      ->isRevisionable()) {
      $criteria['_id'] = $entity
        ->getRevisionId();
      $criteria['entity_id'] = $entity
        ->id();
      $collection = $this
        ->mongoCollection($entity, 'entity_revision');
      $collection
        ->update($criteria, $criteria + $data, [
        'upsert' => TRUE,
      ]);
      $entity
        ->setNewRevision(FALSE);
      if (!isset($return)) {
        $return = $collection->db
          ->lastError();
      }
    }
    if (!$is_new) {
      $this
        ->invokeTranslationHooks($entity);
    }
    if (isset($collection) && empty($return['err'])) {
      return $return['updatedExisting'] ? SAVED_UPDATED : SAVED_NEW;
    }
    return FALSE;
  }

  /**
   * @param $prefix
   * @return int
   */
  protected function nextId($prefix, $existing_id = 0) {
    return $this->mongo
      ->nextId("{$prefix}.{$this->entityTypeId}", (int) $existing_id);
  }

  /**
   * Collect the translations of an entity for saving.
   *
   * @param ContentEntityInterface $entity
   * @return array
   */
  protected function getDataToSave(ContentEntityInterface $entity) {
    $default_langcode = $entity
      ->getUntranslated()
      ->language()
      ->getId();
    $values = array();
    $langcodes = [];
    $languages = $entity
      ->getTranslationLanguages();
    foreach ($languages as $langcode => $language) {
      $translation = $entity
        ->getTranslation($langcode);
      $translated_values = [];
      $langcodes[] = $langcode;

      /** @var \Drupal\Core\Field\FieldItemListInterface $items */
      foreach ($translation as $field_name => $items) {
        $field_storage_definition = $items
          ->getFieldDefinition()
          ->getFieldStorageDefinition();
        $columns = $field_storage_definition
          ->getSchema()['columns'];
        $cardinality = $field_storage_definition
          ->getCardinality();

        /** @var \Drupal\Core\Field\FieldItemListInterface $items */
        if (!$items
          ->isEmpty()) {
          foreach ($items as $delta => $item) {
            if ($delta == $cardinality) {
              break;
            }

            /** @var \Drupal\Core\Field\FieldItemInterface $item */
            foreach ($item
              ->toArray() as $column => $value) {
              if (isset($columns[$column])) {
                $translated_values[$field_name][$delta][$column] = MongoCollectionFactory::castValue($columns[$column]['type'], $value);
              }
            }
          }
        }
      }
      if ($default_langcode == $langcode) {
        array_unshift($values, $this
          ->denormalize($translated_values));
      }
      else {
        $values[] = $this
          ->denormalize($translated_values);
      }
    }
    $data = array(
      'bundle' => $entity
        ->bundle(),
      'translations' => $langcodes,
      'values' => $values,
    );
    $this
      ->entityToData($entity, $data);
    return $data;
  }

  /**
   * Add extra values from the entity to the data to be saved.
   *
   * @param ContentEntityInterface $entity
   * @param array $data
   *   Three keys:
   *   - bundle: the entity bundle.
   *   - translations: the list of entity languages
   *   - values: the actual entity values
   */
  protected function entityToData(ContentEntityInterface $entity, &$data) {
  }

  /**
   * Gets the name of the service for the query for this entity storage.
   *
   * @return string
   *   The name of the service for the query for this entity storage.
   */
  public function getQueryServicename() {
    return 'entity.query.mongodb';
  }

  /**
   * @param array $translated_values
   * @return array
   */
  protected function denormalize(array $translated_values) {
    return $translated_values;
  }

  /**
   * {@inheritdoc}
   */
  protected function doLoadFieldItems($entities, $age) {
  }

  /**
   * {@inheritdoc}
   */
  protected function doSaveFieldItems(EntityInterface $entity, $update) {
  }

  /**
   * {@inheritdoc}
   */
  protected function doDeleteFieldItems(EntityInterface $entity) {
  }

  /**
   * {@inheritdoc}
   */
  protected function doDeleteFieldItemsRevision(EntityInterface $entity) {
  }

  /**
   * {@inheritdoc}
   */
  protected function readFieldItemsToPurge(FieldDefinitionInterface $field_definition, $batch_size) {

    // TODO: Implement readFieldItemsToPurge() method.
    return [];
  }

  /**
   * {@inheritdoc}
   */
  protected function purgeFieldItems(ContentEntityInterface $entity, FieldDefinitionInterface $field_definition) {

    // TODO: Implement purgeFieldItems() method.
  }

  /**
   * 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.
   *
   * @param array|null $ids
   *   (optional) An array of entity IDs, or NULL to load all entities.
   *
   * @return \Drupal\Core\Entity\EntityInterface[]
   *   Associative array of entities, keyed on the entity ID.
   */
  protected function doLoadMultiple(array $ids = NULL) {
    $find = array();
    if ($ids !== NULL) {
      $find['_id']['$in'] = array_values(array_map('intval', $ids));
    }
    return $this
      ->loadFromMongo('entity', $find);
  }

  /**
   * Determines if this entity already exists in storage.
   *
   * @param int|string $id
   *   The original entity ID.
   * @param \Drupal\Core\Entity\EntityInterface $entity
   *   The entity being saved.
   *
   * @return bool
   */
  protected function has($id, EntityInterface $entity) {
    return !$entity
      ->isNew();
  }

  /**
   * Determines the number of entities with values for a given field.
   *
   * @param \Drupal\Core\Field\FieldStorageDefinitionInterface $storage_definition
   *   The field for which to count data records.
   * @param bool $as_bool
   *   (Optional) Optimises the query for checking whether there are any records
   *   or not. Defaults to FALSE.
   *
   * @return bool|int
   *   The number of entities. If $as_bool parameter is TRUE then the
   *   value will either be TRUE or FALSE.
   *
   * @see \Drupal\Core\Entity\FieldableEntityStorageInterface::purgeFieldData()
   */
  public function countFieldData($storage_definition, $as_bool = FALSE) {

    // TODO: Implement countFieldData() method.
  }

  /**
   * @param EntityInterface $entity
   * @return \MongoCollection
   */
  protected function mongoCollection(ContentEntityInterface $entity, $prefix) {
    return $this->mongo
      ->get($prefix . '.' . $this->entityTypeId);
  }

  /**
   * {@inheritdoc}
   */
  protected function buildPropertyQuery(QueryInterface $entity_query, array $values) {
    $default_langcode_key = $this->entityType
      ->getKey('default_langcode');
    if ($default_langcode_key) {
      if (!array_key_exists($default_langcode_key, $values)) {
        if ($this->entityType
          ->isTranslatable()) {
          $values[$default_langcode_key] = 1;
        }
      }
      elseif ($values[$default_langcode_key] === NULL) {
        unset($values[$default_langcode_key]);
      }
    }
    parent::buildPropertyQuery($entity_query, $values);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ContentEntityStorage::$entityManager protected property
ContentEntityStorage::$mongo protected property
ContentEntityStorage::buildPropertyQuery protected function Builds an entity query. Overrides EntityStorageBase::buildPropertyQuery
ContentEntityStorage::countFieldData public function Determines the number of entities with values for a given field. Overrides FieldableEntityStorageInterface::countFieldData
ContentEntityStorage::createInstance public static function Instantiates a new instance of this entity handler. Overrides ContentEntityStorageBase::createInstance
ContentEntityStorage::deleteRevision public function Delete a specific entity revision. Overrides ContentEntityStorageBase::deleteRevision
ContentEntityStorage::denormalize protected function 1
ContentEntityStorage::doDelete public function Deletes permanently saved entities. Overrides ContentEntityStorageBase::doDelete
ContentEntityStorage::doDeleteFieldItems protected function Deletes entity field values from the storage. Overrides ContentEntityStorageBase::doDeleteFieldItems
ContentEntityStorage::doDeleteFieldItemsRevision protected function
ContentEntityStorage::doLoadFieldItems protected function
ContentEntityStorage::doLoadMultiple protected function Performs storage-specific loading of entities. Overrides EntityStorageBase::doLoadMultiple
ContentEntityStorage::doSave protected function Performs storage-specific saving of the entity. Overrides ContentEntityStorageBase::doSave 1
ContentEntityStorage::doSaveFieldItems protected function Writes entity field values to the storage. Overrides ContentEntityStorageBase::doSaveFieldItems
ContentEntityStorage::entityToData protected function Add extra values from the entity to the data to be saved. 1
ContentEntityStorage::getDataToSave protected function Collect the translations of an entity for saving.
ContentEntityStorage::getQueryServicename public function Gets the name of the service for the query for this entity storage.
ContentEntityStorage::has protected function Determines if this entity already exists in storage. Overrides EntityStorageBase::has
ContentEntityStorage::loadFromMongo protected function Loads entity records from a MongoDB collections.
ContentEntityStorage::loadRevision public function Load a specific entity revision. Overrides ContentEntityStorageBase::loadRevision
ContentEntityStorage::mongoCollection protected function
ContentEntityStorage::mongoToEntityData protected function
ContentEntityStorage::nextId protected function
ContentEntityStorage::purgeFieldItems protected function Removes field items from storage per entity during purge. Overrides ContentEntityStorageBase::purgeFieldItems
ContentEntityStorage::readFieldItemsToPurge protected function Reads values to be purged for a single field. Overrides ContentEntityStorageBase::readFieldItemsToPurge
ContentEntityStorage::__construct public function Constructs a DatabaseStorageController object. Overrides ContentEntityStorageBase::__construct
ContentEntityStorageBase::$bundleKey protected property The entity bundle key.
ContentEntityStorageBase::$cacheBackend protected property Cache backend.
ContentEntityStorageBase::$deprecatedProperties protected property
ContentEntityStorageBase::$entityFieldManager protected property The entity field manager service.
ContentEntityStorageBase::$entityTypeBundleInfo protected property The entity bundle info.
ContentEntityStorageBase::$latestRevisionIds protected property Stores the latest revision IDs for entities.
ContentEntityStorageBase::cleanIds protected function Ensures integer entity key values are valid.
ContentEntityStorageBase::createRevision public function Creates a new revision starting off from the specified entity object. Overrides TranslatableRevisionableStorageInterface::createRevision
ContentEntityStorageBase::createTranslation public function Constructs a new entity translation object, without permanently saving it. Overrides TranslatableStorageInterface::createTranslation
ContentEntityStorageBase::createWithSampleValues public function Creates an entity with sample field values. Overrides ContentEntityStorageInterface::createWithSampleValues 1
ContentEntityStorageBase::doCreate protected function Performs storage-specific creation of entities. Overrides EntityStorageBase::doCreate
ContentEntityStorageBase::doDeleteRevisionFieldItems abstract protected function Deletes field values of an entity revision from the storage. 2
ContentEntityStorageBase::doLoadMultipleRevisionsFieldItems protected function Actually loads revision field item values from the storage. 2
ContentEntityStorageBase::doLoadRevisionFieldItems Deprecated abstract protected function Actually loads revision field item values from the storage. 2
ContentEntityStorageBase::doPostSave protected function Performs post save entity processing. Overrides EntityStorageBase::doPostSave
ContentEntityStorageBase::doPreSave protected function Performs presave entity processing. Overrides EntityStorageBase::doPreSave
ContentEntityStorageBase::finalizePurge public function Performs final cleanup after all data of a field has been purged. Overrides FieldableEntityStorageInterface::finalizePurge 1
ContentEntityStorageBase::getFromPersistentCache protected function Gets entities from the persistent cache backend.
ContentEntityStorageBase::getLatestRevisionId public function Returns the latest revision identifier for an entity. Overrides RevisionableStorageInterface::getLatestRevisionId
ContentEntityStorageBase::getLatestTranslationAffectedRevisionId public function Returns the latest revision affecting the specified translation. Overrides TranslatableRevisionableStorageInterface::getLatestTranslationAffectedRevisionId
ContentEntityStorageBase::getRevisionTranslationMergeSkippedFieldNames protected function Returns an array of field names to skip when merging revision translations.
ContentEntityStorageBase::hasFieldValueChanged protected function Checks whether the field values changed compared to the original entity.
ContentEntityStorageBase::initFieldValues protected function Initializes field values.
ContentEntityStorageBase::invokeFieldMethod protected function Invokes a method on the Field objects within an entity.
ContentEntityStorageBase::invokeFieldPostSave protected function Invokes the post save method on the Field objects within an entity.
ContentEntityStorageBase::invokeHook protected function Invokes a hook on behalf of the entity. Overrides EntityStorageBase::invokeHook 1
ContentEntityStorageBase::invokeStorageLoadHook protected function Invokes hook_entity_storage_load().
ContentEntityStorageBase::invokeTranslationHooks protected function Checks translation statuses and invoke the related hooks if needed.
ContentEntityStorageBase::isAnyRevisionTranslated protected function Checks whether any entity revision is translated.
ContentEntityStorageBase::isAnyStoredRevisionTranslated protected function Checks whether any stored entity revision is translated.
ContentEntityStorageBase::loadMultipleRevisions public function Loads multiple entity revisions. Overrides RevisionableStorageInterface::loadMultipleRevisions 1
ContentEntityStorageBase::loadUnchanged public function Loads an unchanged entity from the database. Overrides EntityStorageBase::loadUnchanged
ContentEntityStorageBase::onFieldDefinitionCreate public function Reacts to the creation of a field. Overrides FieldDefinitionListenerInterface::onFieldDefinitionCreate
ContentEntityStorageBase::onFieldDefinitionDelete public function Reacts to the deletion of a field. Overrides FieldDefinitionListenerInterface::onFieldDefinitionDelete 1
ContentEntityStorageBase::onFieldDefinitionUpdate public function Reacts to the update of a field. Overrides FieldDefinitionListenerInterface::onFieldDefinitionUpdate
ContentEntityStorageBase::onFieldStorageDefinitionCreate public function Reacts to the creation of a field storage definition. Overrides FieldStorageDefinitionListenerInterface::onFieldStorageDefinitionCreate 1
ContentEntityStorageBase::onFieldStorageDefinitionDelete public function Reacts to the deletion of a field storage definition. Overrides FieldStorageDefinitionListenerInterface::onFieldStorageDefinitionDelete 1
ContentEntityStorageBase::onFieldStorageDefinitionUpdate public function Reacts to the update of a field storage definition. Overrides FieldStorageDefinitionListenerInterface::onFieldStorageDefinitionUpdate 1
ContentEntityStorageBase::populateAffectedRevisionTranslations protected function Populates the affected flag for all the revision translations.
ContentEntityStorageBase::preLoad protected function Gathers entities from a 'preload' step. Overrides EntityStorageBase::preLoad
ContentEntityStorageBase::purgeFieldData public function Purges a batch of field data. Overrides FieldableEntityStorageInterface::purgeFieldData
ContentEntityStorageBase::resetCache public function Resets the internal, static entity cache. Overrides EntityStorageBase::resetCache 1
ContentEntityStorageBase::setPersistentCache protected function Stores entities in the persistent cache backend.
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
DeprecatedServicePropertyTrait::__get public function Allows to access deprecated/removed properties.
EntityHandlerBase::$moduleHandler protected property The module handler to invoke hooks on. 2
EntityHandlerBase::moduleHandler protected function Gets the module handler. 2
EntityHandlerBase::setModuleHandler public function Sets the module handler for this handler.
EntityStorageBase::$entityClass protected property Name of the entity class.
EntityStorageBase::$entityType protected property Information about the entity type.
EntityStorageBase::$entityTypeId protected property Entity type ID for this storage.
EntityStorageBase::$idKey protected property Name of the entity's ID field in the entity database table.
EntityStorageBase::$langcodeKey protected property The name of the entity langcode property. 1
EntityStorageBase::$memoryCache protected property The memory cache.
EntityStorageBase::$memoryCacheTag protected property The memory cache cache tag.
EntityStorageBase::$uuidKey protected property Name of entity's UUID database table field, if it supports UUIDs. 1
EntityStorageBase::$uuidService protected property The UUID service. 1
EntityStorageBase::buildCacheId protected function Builds the cache ID for the passed in entity ID. 1
EntityStorageBase::create public function Constructs a new entity object, without permanently saving it. Overrides EntityStorageInterface::create 1
EntityStorageBase::delete public function Deletes permanently saved entities. Overrides EntityStorageInterface::delete 2
EntityStorageBase::getAggregateQuery public function Gets an aggregated query instance. Overrides EntityStorageInterface::getAggregateQuery
EntityStorageBase::getEntityType public function Gets the entity type definition. Overrides EntityStorageInterface::getEntityType
EntityStorageBase::getEntityTypeId public function Gets the entity type ID. Overrides EntityStorageInterface::getEntityTypeId
EntityStorageBase::getFromStaticCache protected function Gets entities from the static cache.
EntityStorageBase::getQuery public function Gets an entity query instance. Overrides EntityStorageInterface::getQuery
EntityStorageBase::getQueryServiceName abstract protected function Gets the name of the service for the query for this entity storage. 4
EntityStorageBase::hasData public function Determines if the storage contains any data. Overrides EntityStorageInterface::hasData 3
EntityStorageBase::load public function Loads one entity. Overrides EntityStorageInterface::load 2
EntityStorageBase::loadByProperties public function Load entities by their property values. Overrides EntityStorageInterface::loadByProperties 3
EntityStorageBase::loadMultiple public function Loads one or more entities. Overrides EntityStorageInterface::loadMultiple 1
EntityStorageBase::mapFromStorageRecords protected function Maps from storage records to entity objects. 4
EntityStorageBase::postLoad protected function Attaches data to entities upon loading.
EntityStorageBase::restore public function Restores a previously saved entity. Overrides EntityStorageInterface::restore 1
EntityStorageBase::save public function Saves the entity permanently. Overrides EntityStorageInterface::save 4
EntityStorageBase::setStaticCache protected function Stores entities in the static entity cache.
EntityStorageInterface::FIELD_LOAD_CURRENT constant Load the most recent version of an entity's field data.
EntityStorageInterface::FIELD_LOAD_REVISION constant Load the version of an entity's field data specified in the entity.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.