Drupal 9 怎么为模块添加数据库表?
发布于
大家好,我正在开发一个 Drupal 9 模块,在数据库里也建好了表,要怎么样才能让模块在安装和卸载时自动创建和删除相应的数据库表呢?
1 个回答
首先需要在模块目录下创建 .install
文件,然后在该文件中实现 hook_schema()
即可。
如模块的名称为 mymodule,则在模块目录下创建 mymodule.install
,并在文件中创建 mymodule_schema()
。
有关 hook_schema()
中的数组定义规范可以参考官方的 Schema 文档 和 快速入门指南。
定义完成后就可以安装、卸载模块进行测试,数据库表会自动进行创建和卸载。
mymodule.install
示例:
/**
* Implements hook_schema().
*/
function mymodule_schema() {
$schema = [];
$schema['mytable1'] = [
'description' => 'This is an example table for MyModule module',
'fields' => [
'id' => [
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
],
'message' => [
'type' => 'varchar',
'length' => 256,
'not null' => TRUE,
],
],
'primary key' => ['id'],
];
// 可更具需要定义多个表.
$schema['mytable2'] = array(
// mytable2 的定义.
);
return $schema;
}