自己编写的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) {
。。。
}
分享到:
相关推荐
drupal常用hook、theme_hook、模板命名等小结
主要为大家介绍了drupal中hook_link和hook_link_alter钩子函数,实例分析了钩子函数的具体用法,具有一定的参考借鉴价值,需要的朋友可以参考下
drupal9.0.1全新版本让你刺激不已,他*的下个东西这么难的马。***&&&%%¥¥##
drupal-codegenerator 用于 Drupal 的 hook_schema() 和 hook_entity_info() 的代码生成器 ReactJS 材质用户界面
NULL 博文链接:https://spring036765.iteye.com/blog/900969
主要为大家介绍了Drupal中hook_theme函数用法,可以实现对drupal主题的灵活定制,对于drupal建站来说非常具有实用价值,需要的朋友可以参考下
主要为大家介绍了drupal中创建hook_user并调用drupal的mail函数发送email实现方法,涉及hook函数的用法及mail函数的调用方法,需要的朋友可以参考下
主要为大家介绍了drupal使用hook_form_alter()修改表单的实现方法,包括了修改多个表单与修改特定的表单,非常实用,需要的朋友可以参考下
适合运行在SinaAppEngine(SAE)上的Drupal7.x_PHP_JavaScript_
主要为大家介绍了DRUPAL6中定义hook_menu参数的方法,较为详细的讲述了hook_menu的参数及其对应的用法,对于采用drupal建站来说非常具有实用价值,需要的朋友可以参考下
Drupal_1 Drupal_1 Drupal_1 Drupal_1 Drupal_1 Drupal_1
这是drupal模块leaflet_widget的背景端口。 一个[Geofield]小部件,为[Leaflet]地图小部件提供[Leaflet.widget]插件,用于添加功能。 [Leaflet.widget]使用[Leaflet.draw]几何图形创建工具。 特征: 创建和管理简单...
如何用drupal6搭建sns网站 sns概念 所需要的模块以及对比选择
对drupal的hook函数进行详细的介绍, 编程时的好帮手
sparql_update_indexer Drupal 7 模块,支持通过 SPARQL 1.1 更新协议对实体进行索引。
WLW_BLOGAPI是网上最流行的BLOGAPI模块,用于取代DRUPAL自带的BLOGAPI,使用这个模块,可以方便地使用桌面工具(比如 Windows Live Writer)离线编写博客文章。但在我的使用过程中,我发现了一些BUG和不足,于是尝试...
drupal7模块开发实例,这里用一个简单的模块开发实例来讲述drupal7模块开发
需要说明的是本文的目的不是详细介绍各个模块的设置和使用方法,所以没有原样照翻模块的文档说明,而是按自己的理解尽量简洁准确的概括出该模块的功能。俗话说‘百闻不如一见’,有的模块作者也给出了截屏图片或实例...
参考中文名:Drupal 7 专业开发 内容摘要:深入讨论Drupal核心知识,建立模块及优化性能,安全性等,是Drupal开发人员的首选教程 作者:Todd Tomlinson、John K. VanDyk
带捆绑包示例的自定义Drupal 8实体 -可能捆绑的最简单实体。 易于创建(很少的代码),难以使用(无链接)。 -具有捆绑的简单实体比“最简单实体”更有用。 具有链接,有用的ListBuilder和信息性消息。 -具有包,...