public function EntityFieldManager::getFieldStorageDefinitions

public EntityFieldManager::getFieldStorageDefinitions($entity_type_id)

Gets the field storage definitions for a content entity type.

This returns all field storage definitions for base fields and bundle fields of an entity type. Note that field storage definitions of a base field equal the full base field definition (i.e. they implement FieldDefinitionInterface), while the storage definitions for bundle fields may implement FieldStorageDefinitionInterface only.

Parameters

string $entity_type_id: The entity type ID. Only content entities are supported.

Return value

\Drupal\Core\Field\FieldStorageDefinitionInterface[] The array of field storage definitions for the entity type, keyed by field name.

Overrides EntityFieldManagerInterface::getFieldStorageDefinitions

See also

\Drupal\Core\Field\FieldStorageDefinitionInterface

File

core/lib/Drupal/Core/Entity/EntityFieldManager.php, line 390

Class

EntityFieldManager
Manages the discovery of entity fields.

Namespace

Drupal\Core\Entity

Code

public function getFieldStorageDefinitions($entity_type_id) {
  if (!isset($this->fieldStorageDefinitions[$entity_type_id])) {
    $this->fieldStorageDefinitions[$entity_type_id] = [];
    // Add all non-computed base fields.
    foreach ($this->getBaseFieldDefinitions($entity_type_id) as $field_name => $definition) {
      if (!$definition->isComputed()) {
        $this->fieldStorageDefinitions[$entity_type_id][$field_name] = $definition;
      }
    }
    // Not prepared, try to load from cache.
    $cid = 'entity_field_storage_definitions:' . $entity_type_id . ':' . $this->languageManager->getCurrentLanguage()->getId();
    if ($cache = $this->cacheGet($cid)) {
      $field_storage_definitions = $cache->data;
    }
    else {
      // Rebuild the definitions and put it into the cache.
      $field_storage_definitions = $this->buildFieldStorageDefinitions($entity_type_id);
      $this->cacheSet($cid, $field_storage_definitions, Cache::PERMANENT, ['entity_types', 'entity_field_info']);
    }
    $this->fieldStorageDefinitions[$entity_type_id] += $field_storage_definitions;
  }
  return $this->fieldStorageDefinitions[$entity_type_id];
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Entity!EntityFieldManager.php/function/EntityFieldManager::getFieldStorageDefinitions/8.1.x