Создание таблиц в базе данных Drupal 7

При разработке собственного модуля для Друпала нередко требуется создать одну или несколько таблиц в базе данных. При этом таблицы должны создаваться автоматически при инсталляции модуля. К счастью, 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');
}
Теги:
Создание таблиц
Добавлено: 26 Февраля 2015 17:58:52 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...