2009-11-08 5 views
14

Только что начав с Doctrine ORM for PHP (v1.1.5) и столкнувшись с чем-то неожиданным.Созданные модели доктрины уважают случай, но сгенерированный Ямл не

Я генерации модели из БД (MySQL 4) с помощью:

Doctrine::generateModelsFromDb($pathToModels); 

Затем генерации YAML из моделей с помощью:

Doctrine::generateYamlFromModels($pathToSchema . '/schema.yml', $pathToModels); 

В сгенерированных моделей, имена столбцов (как определено в hasColumn()) используют тот же случай для полей, что и в db. Все хорошо.

Но в сгенерированном YAML имена столбцов являются строчными, независимо от случая в модели.

В способе generateYamlFromModels() не существует параметров, которые я мог бы использовать для настройки. Есть ли другой атрибут, который я должен устанавливать где-то, возможно, на уровне соединения или на уровне менеджера и т. Д.? Может это ошибка?

Любые идеи очень ценятся. Спасибо и ура!

+0

Я видел вопрос Doctrine ORM: Models not respecting case, но пропустил этот бит в одном из ответов:

Что касается имен полей, они могут быть сопоставлены с верблюжьим использованием псевдонима особенности YAML схемы file (name: user_id as userId).
Итак, это все, что есть? Невозможно получить должное уважение к поколению Yaml, но я могу вручную настроить YAML с помощью наложения псевдонимов? –

+0

Боже, что это за публичное размещение вопроса, который заставляет ответы просто выскочить прямо? Тот же ответ, что и выше (http://stackoverflow.com/questions/1501501/doctrine-orm-models-not-respecting-case/1620387#1620387) отмечает: «Кроме того, вы можете автоматизировать сглаживание полей путем разработки настраиваемой задачи для Doctrine. ». Я буду исследовать больше и, возможно, последующую работу там, если это необходимо. Сожалею. [Пожалуйста, не меняйте вниз. Я прав на грани привилегий комментариев.] –

+1

Похоже, что Doctrine_Table :: setColumn() устанавливает имя столбца в нижний регистр, если он не видит там псевдонима. –

ответ

2

Кажется, это ошибка. Я говорю это потому, что YAML is case sensitive и Doctrine's generateYAMLFromModels()is documented to be case sensitive. Я нашел case sensitivity bug, который был в версии 2.0. Возможно, это ошибка, которая повлияла на вашу программу. Однако, если учесть что-то еще, похоже, комментарий от Dimitris Baltas является обходным путем выбора:

Другой альтернативой является создание моделей из БД, а затем yaml из моделей. Этот держит правый корпус.

Удачной охота :)