1 field.api.php hook_field_storage_update_field($field, $prior_field, $has_data)

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

File

core/modules/field/field.api.php, line 570
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.
  }
  backdrop_get_schema(NULL, TRUE);
}