2009-11-08 3 views
14

Po prostu zaczynałem od Doctrine ORM for PHP (v1.1.5) i wpadłem na coś nieoczekiwanego.Wygenerowane modele Doctrine respektują wielkość liter, ale wygenerowane Yaml nie są

jestem generowania modeli z db (MySQL 4) za pomocą:

Doctrine::generateModelsFromDb($pathToModels); 

Następnie generowania YAML z modeli przy użyciu:

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

w generowanych modeli, nazwy kolumn (jak zdefiniowano w hasColumn()) użyj tego samego przypadku dla pól, jak w db. Wszystko dobrze.

Jednak w wygenerowanym YAML nazwy kolumn są pisane małymi literami, niezależnie od przypadku w modelu.

Nie wydaje się, aby dostępne były jakiekolwiek opcje na metodzie generateYamlFromModels(), które mogłem wykorzystać w celu poprawienia tego. Czy jest jakiś inny atrybut, który powinienem ustawić gdzieś, być może na poziomie połączenia lub na poziomie menedżera, itp.? Czy to może być błąd?

Wszelkie pomysły bardzo doceniane. Dzięki i okrzyki!

+0

widziałem pytanie Doctrine ORM: Models not respecting case, ale brakowało tego bitu w jednej z odpowiedzi:

Co do nazw pól, mogą być odwzorowane na CamelCase użyciu funkcji alias schematu YAML plik (name: id_użytkownika jako identyfikator_użytkownika).
Czy to wszystko, co istnieje? Nie ma sposobu, aby uzyskać szacunek dla pokolenia Yaml, ale mogę ręcznie poprawić YAML za pomocą aliasingu? –

+0

Jezu, co takiego jest w publicznym publikuwaniu pytania, które sprawia, że ​​odpowiedzi po prostu się pojawiają? Ta sama odpowiedź co powyżej (http://stackoverflow.com/questions/1501501/doctrine-orm-models-not-respecting-case/1620387#1620387) zauważa: "Co więcej, możesz zautomatyzować aliasing pól, opracowując niestandardowe zadanie dla Doctrine. ". Będę badał więcej, a może w razie potrzeby kontynuował. Przepraszam. [Proszę, nie wierzcie mi. Jestem na krawędzi przywilejów komentarza.] –

+1

Wygląda na to, że Doctrine_Table :: setColumn() ustawia nazwę kolumny na małe litery, ponieważ nie widzi tam aliasu. –

Odpowiedz

2

Wygląda na to, że jest to błąd. Mówię to, ponieważ YAML is case sensitive i Doctrine's generateYAMLFromModels()is documented to be case sensitive. Znalazłem numer case sensitivity bug, który był w wersji 2.0 beta. Może to błąd, który wpłynął na twój program. Poza niczym innym, wygląda na to, że komentarz Dimitrisa Baltasa wydaje się być wyborem z wyboru:

Inną alternatywą jest generowanie modeli z DB, a następnie yaml z modeli. Ta zachowuje właściwą obudowę.

Szczęśliwy Polowanie :)

Powiązane problemy