Работа со схемой данных в 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. При де-инсталляция модуля, не забудьте удалить ваши поля в таблицах сторонних модулей.

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

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

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

Январь 24, 2020 г.

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

Читать

Получить имя текущей темы по дефолту в Drupal

Январь 21, 2019 г.

Theme API к сожалению не даёт прямого метода, чтобы прочитать это значение. Как его получить? Иногда программно нужно установить, что именно видит пользователь на фронт-енд (какую тему использует движок). Необходимость возникает из-за того, ...

Читать

 

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

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



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