@adisos

Есть ли аналог функции dbDelta из Wordpress в Drupal 7?

Функция dbDelta проверяет существующую структуру таблиц в БД, сравнивает ее с необходимой плагину структурой и, если это необходимо, вносит изменения в таблицы.
  • Вопрос задан
  • 2224 просмотра
Решения вопроса 1
kalabro
@kalabro
Изменения схемы таблиц указываются явно в хуках-обновлениях.
Например, чтобы увеличить размер поля типа varchar нужно сделать нечто такое (источник):

/**
 * Enlarge URL field size for popular content database table.
 */
function yandex_metrics_reports_update_7202() {
  db_drop_unique_key('yandex_metrics_reports_popular_content', 'url');

  db_change_field('yandex_metrics_reports_popular_content', 'url', 'url', array(
      'description' => 'The url obtained from Yandex.Metrika.',
      'type' => 'varchar',
      'length' => 2048,
      'not null' => TRUE,
      'default' => ''
    ),
    array(
      'indexes' => array('url' => array(array('url', 255))),
    )
  );
}

Далее нужно запустить процесс обновлений, перейдя по ссылке /update.php.

Здесь разработчик сам работает с базой, используя функции db_ (например, db_rename_table, db_change_field, db_field_set_default и т.д.) Друпал за него это делать не будет, чтобы ненароком не повредить данные :)
Есть модули, которые показывают разницу между схемой в модуле и реальным положением вещей в базе: https://www.drupal.org/project/schema, но изменения вносятся автором модуля.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы