Работа со схемой данных в Drupal

В определенный момент стандартные схемы данных Drupal вас могут перестать удовлетворять, и вы решите добавить свои таблицы в базу данных сайта. Как это сделать по друпальному (а-ля drupal way)?

Для инициализации таблиц в базе данных, которые называются в терминах drupal — схемой данных, используется одноименный API — Schema API.

API предлагает два хука hook_schema и hook_schema_alter. Их нужно определять в файле модуля myModuleName.install.

Hook_schema

Эта зацепка позволяет определить модулю собственные таблицы. Это делается с помощью массива, описывающего свойства полей этой таблицы. Подробнее можно посмотреть в доках schema API, а ещё лучше взглянуть на реальную реализацию этого хука, к примеру в файле /modules/node/node.install.

Данный хук вызывает иногда у разработчиков определенные трудности в плане того, в какой момент он вызывается системой. Это происходит только в момент инсталляции модуля в первый раз. При этом происходит создание описанных таблиц физически в базе данных.

Если модуль уже активен, то вариантов как минимум два:

  1. де-инсталлировать модуль, используя /admin/modules/uninstall (или любым другим способом: используя drush pmu myModuleName или удалив запись из таблицы system). Затем снова включить (и инсталлировать) модуль, чтобы заставить систему выполнить инструкции зацепки hook_schema.
  2. Написать очередной hook_update для вашего модуля с командой drupal_install_schema(‘myModuleName’);
    Это напрямую вызовет hook_schema вашего модуля.

При изменении схемы в процессе совершенствования модуля (добавлении полей, новых таблиц) придется добавлять очередные hook_update с использованием соответствующих команд Schema API.

При деинсталляции модуля drupal вызывает drupal_uninstall_schema для вашего модуля. Т.е. созданные таблицы удаляются из базы.

Hook_schema_alter

Сообщает о изменении схемы (таблиц), созданных другими модулями. Сам хук не создаёт новых полей, но должен быть объявлен в myModuleName.install для поддержания информации об общей схеме в актуальном порядке.

Менять же существующие схемы нужно через hook_update, используя команды schema API. При де-инсталляция модуля, не забудьте удалить ваши поля в таблицах сторонних модулей.

Написать комментарий

Мало букафф? Читайте есчо !

Удаление nodequeue программно

Май 28, 2021 г.

Небольшой сниппет (snippet) по удалению сущностей nodequeue из кода. Может быть полезно при миграции данных. Удобно оперировать с машинным именем нод-кью, но функция удаления требует ID, потому код обычно обретает следующие формы: [crayon-67a6cb73ce7e2732669493/] ...

Читать

Включить вывод php ошибок в drupal 7

Январь 24, 2020 г.

Drupal надстраивает собственные разрешения на вывод ошибок, потому если вам необходим вывод ошибок на этапе разработки, то важно знать как разрешить их ...

Читать

 

Комментарии к «Работа со схемой данных в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: