При разработке собственного модуля для Друпала нередко требуется создать одну или несколько таблиц в базе данных. При этом таблицы должны создаваться автоматически при инсталляции модуля. К счастью, Drupal 7 позволяет это сделать достаточно легко.
Для создания собственной таблицы в базе данных в файле инсталляции (module_name.install) мы должно включить описание необходимой нам таблицы. Используем hook_schema(), где, как всегда, заменяем hook на имя нашего модуля.
Наш хук с описанием может выглядеть примерно так (создаем таблицу gallery_reference):
function gallery_schema()
{
$schema['gallery_reference'] = array(
'description' => 'Table description',
'fields' => array(
'gallery_id' => array(
'type' => 'int',
),
'image_id' => array(
'type' => 'int',
),
'notice' => array(
'type' => 'varchar',
'length' => 255,
),
),
'primary key' => array('gallery_id'),
);
return $schema;
}
Как видно из примера, мы создаем таблицу из трех столбцов (gallery_id, image_id, notice). В качестве первичного ключа мы описываем gallery_id. При инсталляции модуля Друпал автоматически сканирует ваш файл инсталляции, находит описание «схемы» и создает таблицу в базе данных в соответствии с ней.
Если создание подобных описаний для вас представляет большую проблему, то можно воспользоваться специальным модулем
schema. После его установки в разделе Structure => Schema =>Inspect вы можете увидеть описание для любой уже существующей таблицы в базе данных.
Также мы должны включить в наш файл инсталляции hook_uninstall(), который будет вызываться при деинсталляции модуля. Задачи этой функции удалить весь контент, связанный с нашим модулем (ноды, типы контента), и, конечно же, таблицы в базе данных.
function gallery_uninstall()
{
//удаляем ноды
...
//удаляем типы контента
...
//удаляем таблицу
drupal_uninstall_schema('gallery');
}