How PHP array to schema of MySQL table?

Добрый день!

Для удобства разработки навеяло мне создать некий объект который будет в режиме "дебаг" сравнивать структуру таблицы заложенную в массив со структурой полученной из DESCRIBE table и при необходимости с помощью команд ALTER table будет изменять структуру таблицы.
Надоело лазить во всякие phpmyadmin и прочие за элементарными действиями.

К примеру имеем таблицу - company
и массив её полей
$filds = [
['id', 'int(11)', 'NO', 'PRI', '', 'auto_increment'],
['caption', 'varchar(255)', 'NO', 'MUL', '', ''],
['city', 'varchar(255)', 'NO', '', '', ''],
['inn', 'varchar(255)', 'NO', '', '', ''],
['active', "enum('1','0')", 'NO', '', '1', '']
];


Понадобилось нам добавить поле телефон Phone
добавляем
['id', 'int(11)', 'NO', 'PRI', '', 'auto_increment'],
['caption', 'varchar(255)', 'NO', 'MUL', '', ''],
['city', 'varchar(255)', 'NO', '', '', ''],
['inn', 'varchar(255)', 'NO', '', '', ''],
['phone', 'varchar(255)', 'NO', '', '', ''],
['active', "enum('1','0')", 'NO', '', '1', '']


И при следующем создании экземпляра объекта Компания
Мы увидим что DESCRIBE company отличается от массива $filds
Тогда к базе литит квери
ALTER TABLE company ADD phone VARCHAR(255) AFTER inn


Если из массива удалить строчку ['city', 'varchar(255)', 'NO', '', '', ''],
Тогда ALTER TABLE company DROP city

И так далее. Всего необходимы следующие функции модификации:
- добавить поле
- удалить поле
- изменить тип
- добавить ключ
- переместить поле (изменить порядок внутри таблицы)
....

Может кто подскажет готовую реализацию.
И вообще по вашему опыту - оно надо?
Как по вашему должен выглядеть список возможностей модификаций? Что бы добавили сюда?
  • Вопрос задан
  • 2333 просмотра
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Это уже есть в doctrine/migrations + doctrine/orm. Можно просто взять doctrine/migrations и dbal и сделать универсальный инструмент.

p.s. использую doctrin/migrations постоянно, миграции схемы дифами это круто.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 09:29
2500 руб./за проект
25 апр. 2024, в 09:27
4000 руб./за проект
25 апр. 2024, в 09:20
10000 руб./за проект