Drupal模块自定义版本更新(hook_update_N)的用法_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > Drupal模块自定义版本更新(hook_update_N)的用法

Drupal模块自定义版本更新(hook_update_N)的用法

 2011/9/23 8:29:17  羽落窗前  http://miyulano.iteye.com  我要评论(0)
  • 摘要:自己编写的Drupal模块,有时候需要对数据库表进行修改,但是又不想抹掉已经在数据库中存有数据的表格,就要用到hook_update_N()。步骤:1。在模块的.install文件夹下添加hook_update_N()的钩子.按照drupal官网文档上的命名规则,建议用version版本号来定义N是多少。例如,如果.info里version=‘6.x-1.2',那么function名可以定义为xxxx_update_6012()2.以下是几种修改数据库表的例子
  • 标签:用法 自定义

自己编写的Drupal模块,有时候需要对数据库表进行修改,但是又不想抹掉已经在数据库中存有数据的表格,就要用到hook_update_N()。

?

步骤:

1。在模块的 .install?文件夹下添加hook_update_N()的钩子.?按照drupal官网文档上的命名规则,建议用version版本号来定义N是多少。例如,如果.info里version?=?‘6.x-1.2',?那么function名可以定义为?xxxx_update_6012()

?

2.??以下是几种修改数据库表的例子

?

-?Adding?a?new?column

?

<?php
function mymodule_update_6100() {
  $ret = array();
  db_add_field($ret, 'mytable1', 'newcol', array('type' => 'int', 'not null' => TRUE));
  return $ret;
}
?>
?

?

-?Add?a?new?table

?

<?php
function mymodule_update_6101() {
  $schema['mytable2'] = array(
     // table definition array goes here
  );
  $ret = array();
  db_create_table($ret, 'mytable2', $schema['mytable2']);
  return $ret;
}
?>
?

?

?

-?Add?a?new?key

?

<?php
function mymodule_update_6102() {
  $ret = array();
  db_add_unique_key($ret, 'mytable2', 'mykey', array('field1', 'field2')); 
  return $ret;
}
?>
?

?

3.?添加完成之后,进入update.php,点击continue,在?Select?version里就能看到了。

注意:Drupal?6?有一个bug,?如果module的名字里包含大写字母,在select?version里会找不到这个模块的更新版本解决方法是,在includes/install.inc文件里,添加一行代码,如下:

function drupal_get_schema_versions($module) {
  。。。
  $module = strtolower($module); //加上这一行
  foreach ($functions['user'] as $function) {
  。。。
}
?

?

?

?

?

?

?

发表评论
用户名: 匿名