[英]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.