protected function DefaultTableMapping::generateFieldTableName in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/lib/Drupal/Core/Entity/Sql/DefaultTableMapping.php \Drupal\Core\Entity\Sql\DefaultTableMapping::generateFieldTableName()
Generates a safe and unambiguous field table name.
The method accounts for a maximum table name length of 64 characters, and takes care of disambiguation.
Parameters
\Drupal\Core\Field\FieldStorageDefinitionInterface $storage_definition: The field storage definition.
bool $revision: TRUE for revision table, FALSE otherwise.
Return value
string The final table name.
2 calls to DefaultTableMapping::generateFieldTableName()
- DefaultTableMapping::getDedicatedDataTableName in core/
lib/ Drupal/ Core/ Entity/ Sql/ DefaultTableMapping.php - Generates a table name for a field data table.
- DefaultTableMapping::getDedicatedRevisionTableName in core/
lib/ Drupal/ Core/ Entity/ Sql/ DefaultTableMapping.php - Generates a table name for a field revision archive table.
File
- core/
lib/ Drupal/ Core/ Entity/ Sql/ DefaultTableMapping.php, line 378 - Contains \Drupal\Core\Entity\Sql\DefaultTableMapping.
Class
- DefaultTableMapping
- Defines a default table mapping class.
Namespace
Drupal\Core\Entity\SqlCode
protected function generateFieldTableName(FieldStorageDefinitionInterface $storage_definition, $revision) {
$separator = $revision ? '_revision__' : '__';
$table_name = $storage_definition
->getTargetEntityTypeId() . $separator . $storage_definition
->getName();
// Limit the string to 48 characters, keeping a 16 characters margin for db
// prefixes.
if (strlen($table_name) > 48) {
// Use a shorter separator, a truncated entity_type, and a hash of the
// field UUID.
$separator = $revision ? '_r__' : '__';
// Truncate to the same length for the current and revision tables.
$entity_type = substr($storage_definition
->getTargetEntityTypeId(), 0, 34);
$field_hash = substr(hash('sha256', $storage_definition
->getUniqueStorageIdentifier()), 0, 10);
$table_name = $entity_type . $separator . $field_hash;
}
return $table_name;
}