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

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

0 голосов
/ 03 декабря 2010

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

ALTER TABLE `TABLE` ADD `FIELD` INT UNSIGNED NOT NULL <b>AFTER</b> `SOME_FIELD` 

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

Султан

Ответы [ 2 ]

2 голосов
/ 12 декабря 2010

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

db_add_field('TABLE', 'FIELD', "VARCHAR( 255 ) NOT NULL DEFAULT '0' AFTER FIELD_2");
0 голосов
/ 19 октября 2011

Вышеприведенное не работает, поскольку один из них пропускает первый аргумент (ссылка на $ 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;
}

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

...