function node_update_8003
Promote 'status' and 'uid' fields to entity keys.
File
-
core/
modules/ node/ node.install, line 199
Code
function node_update_8003() {
// The 'status' and 'uid' fields were added to the 'entity_keys' annotation
// of \Drupal\node\Entity\Node in https://www.drupal.org/node/2498919, but
// this update function wasn't added until
// https://www.drupal.org/node/2542748.
$manager = \Drupal::entityDefinitionUpdateManager();
$entity_type = $manager->getEntityType('node');
$entity_keys = $entity_type->getKeys();
$entity_keys['status'] = 'status';
$entity_keys['uid'] = 'uid';
$entity_type->set('entity_keys', $entity_keys);
$manager->updateEntityType($entity_type);
// @todo The above should be enough, since that is the only definition that
// changed. But \Drupal\Core\Entity\Sql\SqlContentEntityStorageSchema varies
// field schema by whether a field is an entity key, so invoke
// EntityDefinitionUpdateManagerInterface::updateFieldStorageDefinition()
// with an unmodified field storage definition to trigger the necessary
// changes. SqlContentEntityStorageSchema::onEntityTypeUpdate() should be
// fixed to automatically handle this.
// See https://www.drupal.org/node/2554245.
foreach ([
'status',
'uid',
] as $field_name) {
$manager->updateFieldStorageDefinition($manager->getFieldStorageDefinition($field_name, 'node'));
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.