Drupal: обновление модуля

0

У меня есть модуль, и у меня есть обновление, чтобы изменить таблицу базы данных, в ближайшее время мне нужно сделать что-то вроде

ALTER TABLE `TABLE` ADD `FIELD` INT UNSIGNED NOT NULL AFTER `SOME_FIELD` 

так есть ли встроенная функция в Drupal для внесения этих изменений? Я считал, что функция db_add_field не работает?

Султан

  • 0
    в чем проблема с db_add_field?
  • 0
    Я не мог понять, как сказать db_add_field ПОСЛЕ НЕГО FIELD_2
Показать ещё 2 комментария
Теги:
database
module
drupal-6

2 ответа

2
Лучший ответ

Использование db_add_field()

db_add_field('TABLE', 'FIELD', "VARCHAR( 255 ) NOT NULL DEFAULT '0' AFTER FIELD_2");
0

Вышеприведенное не работает, для одного он не учитывает первый аргумент (ссылка на $ret), а четвертый аргумент не разрешает сырой SQL-запрос, а только структурированный массив.

Мне нужно было сделать это (замените hook_update_N на modulename_update_XXXX в соответствии с документацией drupal api, конечно):

function hook_update_N(&$sandbox) {
  // We use update_sql here, instead of db_add_field because we cannot specify
  // AFTER in the db_add_field.
  $ret = array();
  $ret[] = update_sql("ALTER TABLE {table} ADD `FIELD` INT UNSIGNED NOT NULL AFTER `SOME_FIELD`");
  return $ret;
}

Надеюсь, это поможет кому-то еще.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню