Skip to content

Feature/orm table builder#190

Open
temi4 wants to merge 2 commits into
andreyryabin:masterfrom
temi4:feature/orm-table-builder
Open

Feature/orm table builder#190
temi4 wants to merge 2 commits into
andreyryabin:masterfrom
temi4:feature/orm-table-builder

Conversation

@temi4

@temi4 temi4 commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Что сделано

Добавлена новая секция ORM для миграций произвольных таблиц.

#178

Добавлены команды:

  • Добавить ORM-таблицу / поле
  • Удалить поле ORM-таблицы
  • Удалить ORM-таблицу

Как работает

Добавить ORM-таблицу / поле

Можно выбрать один из режимов:

  • существующая таблица;
  • новая таблица.

Для существующей таблицы добавлен autocomplete-поиск по таблицам. Таблицу нужно выбрать из списка: случайный ввод и Enter не создают миграцию с несуществующей таблицей.

Для новой таблицы указывается имя таблицы вручную.

Поля задаются через карточки:

  • название;
  • тип;
  • длина;
  • NULL;
  • значение по умолчанию;
  • первичный ключ;
  • автоинкремент.

При добавлении полей в существующую таблицу настройки первичного ключа и автоинкремента скрыты, так как это уже изменение ключей таблицы, а не простое добавление поля.

Если поле уже существует, оно не изменяется. Тип, NULL и default существующих полей не меняются.

Удалить поле ORM-таблицы

Можно выбрать существующую таблицу через autocomplete и затем выбрать поля для удаления.

Отсутствие поля при применении миграции не считается ошибкой.

Откат миграции запрещен, так как удаленное поле автоматически восстановить нельзя.

Удалить ORM-таблицу

Можно выбрать существующую таблицу через autocomplete.

Отсутствие таблицы при применении миграции не считается ошибкой.

Откат миграции запрещен, так как удаленную таблицу автоматически восстановить нельзя.

Технические детали

  • Добавлен ajax autocomplete для поиска таблиц.
  • Для списка таблиц используется SQL через SqlHelper, так как публичного D7 API для поиска таблиц с фильтром/лимитом нет.
  • Для операций со схемой используются возможности D7 connection там, где они есть.
  • После изменения схемы очищается кеш структуры таблицы через clearCaches($tableName).
  • Миграции создаются как новые/непримененные: реальные изменения БД выполняются только при запуске up().

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant