Добрый день!
Для удобства разработки навеяло мне создать некий объект который будет в режиме "дебаг" сравнивать структуру таблицы заложенную в массив со структурой полученной из 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
И так далее. Всего необходимы следующие функции модификации:
- добавить поле
- удалить поле
- изменить тип
- добавить ключ
- переместить поле (изменить порядок внутри таблицы)
....
Может кто подскажет готовую реализацию.
И вообще по вашему опыту - оно надо?
Как по вашему должен выглядеть список возможностей модификаций? Что бы добавили сюда?