Drupal → Создание и удаление таблиц базы данных в своём модуле
Таблицы описываются в файле с расширением .install и хуке hook_shema(). Затем с помощью хука hook_install() добавляются в базу при инсталляции модуля, и удаляются с помощью хука hook_uninstall() при удалении модуля на странице admin/build/modules/uninstall
<?php // файл mymodule.install /** * Реализация hook_schema() * Описываем таблицу table1 с двумя полями — nid и sometext */ function mymodule_schema() { $schema['table1'] = array( 'description' => 'The base table for mymodule.', 'fields' => array( // описание поля nid 'nid' => array( 'description' => t('Node ID'), 'type' => 'serial', 'unsigned' => true, 'not null' => true, ), // описание поля sometext 'sometext' => array( 'description' => t('Some text'), 'type' => 'varchar', 'length' => 255, 'not null' => true, 'default' => '', ), ), 'primary key' => array('nid'), ); return $schema; } /** * Реализация hook_install() * Создание таблицы table1 при инсталляции модуля */ function mymodule_install() { drupal_install_schema('mymodule'); } /** * Реализация hook_uninstall() * Удаление таблицы table1 при удалении модуля */ function mymodule_uninstall() { drupal_uninstall_schema('mymodule'); }
Комментарии
У Меня почему-то не работает.
При этом drupal никаких ошибок или предупреждений не выдает(
В какую сторону смотреть?
смотрите исходники других модулей, сравнивайте, пробуйте. если не поможет — http://drupal.org/project/issues/drupal
разве не drupal_install_schema('table1');
нет
окей, почему может быть такая ситуация (друпал 7):
- при установке модуля таблицы создаются, однако выводистя ошибка типа тиблица уже существует
- после удаления модуля через admin/modules/uninstall таблицы не удаляются
видимо забыли drupal_uninstall_schema
а вот и нет. не забыл.
даже если вручную после удаления модуля удаляю талицы, удаляю запись о моем модуле в таблице system, всёравно после установки модуля получаю ошибку, что таблица уже создана
и таблица действительно создается. откуда ошибка -- не понятно. почему таблицы сами не удаляются -- тоже не понятно.
аа... понял
прописал как
drupal_install_schema('table1');
drupal_install_schema('table2');
где 'table1', 'table2' мои таблицы в хуке Schema... -- действительно в мануалах везде пишут модуль, но с модулем не работает.
думаю с удалением таже баня
это не будет работать
с удалением видимо какая-то др трабла. по наитию решить не получилось
Для семерки не надо прописывать
my_module_install() {
}
и
my_module_uninstall() {
}
А как в 8ке? К примеру поставил модуль с орга entity browser. Файл entity_browser.install есть а файла uninstall нет. Значит ли єто что модуль после удаления не прибирает за собой?
uninstall файла и не должно быть, оба хука hook_install() и hook_uninstall() всегда пишутся в .install файл. И hook_uninstall() требуется не для каждого модуля.
Оставить комментарий