protected function ContentEntityBase::getEntityKey

protected ContentEntityBase::getEntityKey($key)

Gets the value of the given entity key, if defined.

Parameters

string $key: Name of the entity key, for example id, revision or bundle.

Return value

mixed The value of the entity key, NULL if not defined.

File

core/lib/Drupal/Core/Entity/ContentEntityBase.php, line 1083

Class

ContentEntityBase
Implements Entity Field API specific enhancements to the Entity class.

Namespace

Drupal\Core\Entity

Code

protected function getEntityKey($key) {
  // If the value is known already, return it.
  if (isset($this->entityKeys[$key])) {
    return $this->entityKeys[$key];
  }
  if (isset($this->translatableEntityKeys[$key][$this->activeLangcode])) {
    return $this->translatableEntityKeys[$key][$this->activeLangcode];
  }

  // Otherwise fetch the value by creating a field object.
  $value = NULL;
  if ($this->getEntityType()->hasKey($key)) {
    $field_name = $this->getEntityType()->getKey($key);
    $definition = $this->getFieldDefinition($field_name);
    $property = $definition->getFieldStorageDefinition()->getMainPropertyName();
    $value = $this->get($field_name)->$property;

    // Put it in the right array, depending on whether it is translatable.
    if ($definition->isTranslatable()) {
      $this->translatableEntityKeys[$key][$this->activeLangcode] = $value;
    }
    else {
      $this->entityKeys[$key] = $value;
    }
  }
  else {
    $this->entityKeys[$key] = $value;
  }
  return $value;
}

© 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!ContentEntityBase.php/function/ContentEntityBase::getEntityKey/8.1.x