function hook_field_storage_update_field

Update the storage information for a field.

This is invoked on the field's storage module when updating the field, before the new definition is saved to the database. The field storage module should update its storage tables according to the new field definition. If there is a problem, the field storage module should throw an exception.

Parameters

$field: The updated field structure to be saved.

$prior_field: The previously-saved field structure.

$has_data: TRUE if the field has data in storage currently.

Related topics

1 function implements hook_field_storage_update_field()

Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.

field_sql_storage_field_storage_update_field in drupal/core/modules/field_sql_storage/field_sql_storage.module
Implements hook_field_storage_update_field().
1 invocation of hook_field_storage_update_field()
Field::saveUpdated in drupal/core/modules/field/lib/Drupal/field/Plugin/Core/Entity/Field.php
Saves an updated field definition.

File

drupal/core/modules/field/field.api.php, line 547

Code

function hook_field_storage_update_field($field, $prior_field, $has_data) {
  if (!$has_data) {

    // There is no data. Re-create the tables completely.
    $prior_schema = _field_sql_storage_schema($prior_field);
    foreach ($prior_schema as $name => $table) {
      db_drop_table($name, $table);
    }
    $schema = _field_sql_storage_schema($field);
    foreach ($schema as $name => $table) {
      db_create_table($name, $table);
    }
  }
  else {

    // There is data. See field_sql_storage_field_storage_update_field() for
    // an example of what to do to modify the schema in place, preserving the
    // old data as much as possible.
  }
  drupal_get_schema(NULL, TRUE);
}