簡體   English   中英

Drupal:模塊更新

[英]Drupal: module update

我已經安裝了模塊,並且已經進行了更新以更改數據庫表,不久之后我需要執行以下操作

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

那么在Drupal中是否有任何內置函數可以進行此更改,我認為db_add_field函數不起作用?

蘇丹

使用db_add_field()

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

上面的方法不起作用,因為它忽略了第一個參數(對$ ret的引用),而第四個參數則不允許原始sql查詢,而僅允許結構化數組。

我要做的就是這個(當然,根據drupal api文檔將hook_update_N更改為modulename_update_XXXX):

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;
}

希望這有助於其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM