array( 'target_id' => array( 'description' => 'The ID of the target entity.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, ), 'revision_id' => array( 'description' => 'The revision ID of the target entity.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => FALSE, ), ), 'indexes' => array( 'target_id' => array('target_id'), ), ); // Create a foreign key to the target entity type base type. $entity_manager = Drupal::service('plugin.manager.entity'); if (is_subclass_of($entity_manager->getControllerClass($field['settings']['target_type'], 'storage'), 'Drupal\Core\Entity\DatabaseStorageController')) { $entity_info = $entity_manager->getDefinition($field['settings']['target_type']); $base_table = $entity_info['base_table']; $id_column = $entity_info['entity_keys']['id']; $schema['foreign keys'][$base_table] = array( 'table' => $base_table, 'columns' => array('target_id' => $id_column), ); } return $schema; }