m7v
9/30/2015 - 7:52 AM

Remove entity's fields

Remove entity's fields

<?php

$entity_type = 'message';
$entity_info = entity_get_info($entity_type);
$bundles = array_keys($entity_info['bundles']);
$bundles[] = 'commerce_order_payment_entered';

$options = array(
  'default' => FALSE,
  'deleted' => FALSE,
  'language' => NULL,
);
$storages = array();
foreach ($bundles as $bundle) {
  $instances = _field_invoke_get_instances($entity_type, $bundle, $options);
  foreach ($instances as $field_name => $instance) {
    $field = field_info_field_by_id($instance['field_id']);
    $field_id = $field['id'];
    $storages[$field['storage']['type']][$field_id] = $field_id;
  }
}

// Field storage backends delete their data.
foreach ($storages as $storage => $fields) {
  foreach ($bundles as $bundle) {
    $instances = _field_invoke_get_instances($entity_type, $bundle, $options);
    foreach ($instances as $instance) {
      if (isset($fields[$instance['field_id']])) {
        $field = field_info_field_by_id($instance['field_id']);
        $table_name = _field_sql_storage_tablename($field);
        $revision_name = _field_sql_storage_revision_tablename($field);
// 2 db_delete here with condition by entity_type
      }
    }
  }
}