/** * Returns the base field definitions for entity keys. * * @param \Drupal\Core\Entity\ContentEntityTypeInterface $entity_type * The entity type. * * @return \Drupal\Core\Field\BaseFieldDefinition[] */ protected static function entityKeysBaseFieldDefinitions(ContentEntityTypeInterface $entity_type) { $fields = []; if ($entity_type->hasKey('id')) { $fields[$entity_type->getKey('id')] = BaseFieldDefinition::create('integer')->setLabel(t('ID'))->setReadOnly(TRUE)->setSetting('unsigned', TRUE); } if ($entity_type->hasKey('uuid')) { $fields[$entity_type->getKey('uuid')] = BaseFieldDefinition::create('uuid')->setLabel(t('UUID'))->setReadOnly(TRUE); } if ($entity_type->hasKey('revision')) { $fields[$entity_type->getKey('revision')] = BaseFieldDefinition::create('integer')->setLabel(t('Revision ID'))->setReadOnly(TRUE)->setSetting('unsigned', TRUE); } if ($entity_type->hasKey('langcode')) { $fields[$entity_type->getKey('langcode')] = BaseFieldDefinition::create('language')->setLabel(t('Language'))->setTranslatable(TRUE)->setRevisionable(TRUE)->setDisplayOptions('view', ['type' => 'hidden'])->setDisplayOptions('form', ['type' => 'language_select', 'weight' => 2]); } $bundle_entity_type_id = $entity_type->getBundleEntityType(); if ($bundle_entity_type_id && $entity_type->hasKey('bundle')) { $fields[$entity_type->getKey('bundle')] = BaseFieldDefinition::create('entity_reference')->setLabel(t('Type'))->setSetting('target_type', $bundle_entity_type_id)->setReadOnly(TRUE); } return $fields; }
/** * Initializes common information for a data table. * * @return array * A partial schema array for the data table. */ protected function initializeDataTable() { $entity_type_id = $this->entityType->id(); $id_key = $this->entityType->getKey('id'); $schema = array('description' => "The data table for {$entity_type_id} entities.", 'primary key' => array($id_key, 'langcode'), 'indexes' => array(), 'foreign keys' => array($entity_type_id => array('table' => $this->storage->getBaseTable(), 'columns' => array($id_key => $id_key)))); if ($this->entityType->hasKey('revision')) { $key = $this->entityType->getKey('revision'); $schema['indexes'][$this->getEntityIndexName($key)] = array($key); } $this->addTableDefaults($schema); return $schema; }