ФорумПрограммированиеPHP для идиотов → Генератор структуры БД

Генератор структуры БД

  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 13 ноября 2009 г. 3:25

    Хочу написать генератор структуры БД, по синтаксису схожий с Django

    Пример модели, на базе которой хочу генерировать структуру БД:

    class Product extends PanjoModels
    {
       public function model()
       {
           $name = parent::CharField(array('max_length' => 100, 'unique' => true));
           $price = parent::FloatField(array('null' => true, 'default' => 1));
       }
    }


    Далее, запускаю скрипт, который анализирует все классы модели и строит по ним структуру, например:

    CREATE TABLE Product (
    id INT auto_increment,
       name VARCHAR(100),
       price FLOAT null default 1,
       UNIQUE KEY (name)
    );


    Вопросы:
    Кто-то нечто такое уже реализовывал?
    Или кто-то видел уже подобные наработки?
    Имена полей как определеять? Или лучше не юзать переменны, а например словарь юзать? Или другие идеи есть?
    adw/0
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 13 ноября 2009 г. 3:32, спустя 7 минут 23 секунды

    adw0rd, а почему ты не хочешь процесс создания таблиц выполнять прямым запросом ?
    типа
    $installer->getConnection()->run("
    CREATE TABLE Product (
    id INT AUTO_INCREMENT,
    name VARCHAR(100),
    price FLOAT NULL DEFAULT 1,
    UNIQUE KEY (name)
    )
    ");
    Спустя 30 сек.
    что тебе дает твой схема-билдер ?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 13 ноября 2009 г. 3:35, спустя 2 минуты 49 секунд

    NRG, на ней будет генерироваться не только БД, но и формы, админка и т.д. (в будующем)
    adw/0
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 13 ноября 2009 г. 7:34, спустя 3 часа 58 минут 47 секунд

    adw0rd, ты на рефлексии хоч это сделать?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 13 ноября 2009 г. 7:57, спустя 23 минуты 27 секунд

    пока думал что на рефлексии, но варианты рассматриваются
    adw/0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!