schema-extract — Извлечение схемы из БД¶
Генерирует XML-схему MODX 3 из существующих таблиц в базе данных. После извлечения автоматически генерирует PHP-классы.
Использование¶
Пример¶
Результат:
Как работает¶
- Ищет таблицы с префиксом
modx_<name>_в базе данных - Читает структуру каждой таблицы: поля, типы, индексы
- Генерирует XML-схему в
core/components/<name>/schema/<name>.mysql.schema.xml - Автоматически генерирует PHP-классы в
core/components/<name>/src/
Имена классов¶
Имя класса для каждой таблицы определяется по приоритету:
- TABLE_COMMENT — если комментарий таблицы в MySQL содержит имя в PascalCase (например
MyItem), оно используется как имя класса - Имя таблицы — если комментарий пустой или не в PascalCase, имя генерируется из имени таблицы:
mypackage_items→Items
Чтобы задать имя класса через комментарий:
Маппинг типов¶
| MySQL тип | phptype |
|---|---|
int, bigint, smallint, mediumint |
integer |
tinyint(1) |
boolean |
tinyint (не 1) |
integer |
float, double, decimal |
float |
varchar, char, text, mediumtext, longtext |
string |
datetime |
datetime |
timestamp |
timestamp |
date |
date |
json |
json |
Автоопределение¶
- Таблица с
AUTO_INCREMENTна полеid→extends="xPDO\Om\xPDOSimpleObject"(полеidне включается в схему) - Таблица без
AUTO_INCREMENT→extends="xPDO\Om\xPDOObject" UNSIGNED→attributes="unsigned"- Уникальные индексы →
unique="true"
Когда использовать¶
- Миграция существующей базы данных в компонент MODX 3
- Таблицы создавались вручную через SQL
- Нужно быстро получить схему из рабочей БД
Требует полный MODX
Команда работает только с установленным MODX и подключением к MySQL. В headless-режиме недоступна.
Проверьте результат
После извлечения откройте XML-схему и проверьте имена классов, типы полей и связи. Связи (composite/aggregate) между таблицами не извлекаются автоматически — их нужно добавить вручную.