Доктрина: Смешивание разметки YAML и редактора db-менеджера (navicat)? - PullRequest
0 голосов
/ 12 апреля 2010

Я думаю, что ответ на этот вопрос должен быть: Нет. Однако я надеюсь, что поправлюсь.

Я бы хотел отредактировать нашу базу данных, используя комбинацию Разметка YAML + Doctrine createTables() и Редактирование Navicat . Могу ли я сохранить наследование, которое размечено?

Пример (4 шага, на шаге 4, Doctrine никоим образом не в состоянии воссоздать схему наследования ... или это так? ):

Шаг 1: Создание YAML с наследованием

---
Entity:
  columns:
    username: string(20)
    password: string(16)
    created_at: timestamp
    updated_at: timestamp

User:
  inheritance:
    extends: Entity
    type: column_aggregation
    keyField: type
    keyValue: 1

Group:
  inheritance:
    extends: Entity
    type: column_aggregation
    keyField: type
    keyValue: 2

Шаг 2: Создание таблиц с использованием Doctrine (и удаление / создание БД, если это необходимо)

Создано sql:

CREATE TABLE entity (id BIGINT AUTO_INCREMENT, 
username VARCHAR(20), 
password VARCHAR(16), 
created_at DATETIME, 
updated_at DATETIME, 
type VARCHAR(255), 
PRIMARY KEY(id)) ENGINE = INNODB

Шаг 3: Редактирование таблицы с помощью Navicat Шаг 4: Обновить файл YAML из-за "внешних" правок ...

1 Ответ

1 голос
/ 12 апреля 2010

К сожалению, вы правы.

Наследование Doctrine не влияет на схему базы данных, поэтому вы не сможете заново создать yaml наследования из дампа sql. Это только изменяет файлы модели Doctrine, что в основном означает, что классы User и Group наследуются от класса Entity. (В случае наследования агрегации столбцов также добавляются столбцы типа с именем класса внутри).

Извините, если мой ответ не совсем ясен ...:)

Больше информации здесь .

...