1

I have a custom entity that was create a long time ago. Now we want to update the schema to remove a property (not a field) that was defined in the original schema.

I've reviewed the Drupal API for managing schema for custom entities and I don't see anything that allows me to remove the column during a hook_update_N function.

Am I missing something obvious here?

4

You're looking for db_drop_field(). Although it's called a "field" here, it's essentially the remove-a-column-from-the-DB-table function.

Example from filter_update_7005():

// Drop the roles field from the {filter_format} table.
db_drop_field('filter_format', 'roles');
| improve this answer | |
  • 2
    Just a note - the hook_schema() implementation will need to be updated too, to remove the same field, and there might be some other things to change depending on what modules are installed (e.g. if that property is used in a View, if there are hook_entity_property_info() implementations referring to it, other code, etc). Adding drupal_flush_all_caches() at the end of the update function would be a good idea too – Clive Feb 9 '16 at 18:16
  • @Clive I thought the caches will always be flushed after updates are finished. Is it really necessary to call drupal_flush_all_caches() manually? – Елин Й. Feb 9 '16 at 21:05
  • 1
    I've just checked it up, and yes, after updates are finished, drupal flushes the caches: update_finished – Елин Й. Feb 9 '16 at 21:15
  • @ЕлинЙ. Yep you're right, withdrawn ;) – Clive Feb 9 '16 at 23:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.