You are here

function hook_field_storage_update_field in Drupal 7

Update the storage information for a field.

This is invoked on the field's storage module from field_update_field(), before the new field information is saved to the database. The field storage module should update its storage tables to agree with the new field information. 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 modules/field/modules/field_sql_storage/field_sql_storage.module
Implements hook_field_storage_update_field().
1 invocation of hook_field_storage_update_field()
field_update_field in modules/field/field.crud.inc
Updates a field.

File

modules/field/field.api.php, line 558
Hooks provided by the Field module.

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);
}