2009-11-08 6 views
14

Appena iniziato con Doctrine ORM for PHP (v1.1.5) e si è imbattuto in qualcosa di inaspettato.I modelli di Doctrine generati rispettano il caso, ma generano Yaml non

sto generando modelli dal db (MySQL 4) utilizzando:

Doctrine::generateModelsFromDb($pathToModels); 

Poi generare YAML dai modelli utilizzando:

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

Nei modelli generati, i nomi delle colonne (come definito in hasColumn()) utilizzare lo stesso caso per i campi come nel db. Tutto bene.

Ma nello YAML generato, i nomi delle colonne sono tutti in minuscolo, indipendentemente dal caso nel modello.

Non sembrano esserci opzioni disponibili sul metodo generateYamlFromModels() che potrei utilizzare per ottimizzarlo. C'è qualche altro attributo che dovrei impostare in qualche luogo, forse a livello di connessione, oa livello di manager, ecc.? Potrebbe essere un bug?

Tutte le idee sono molto apprezzate. Grazie e grazie!

+0

avevo visto la domanda Doctrine ORM: Models not respecting case, ma ha sbagliato questo bit in una delle risposte:

Per quanto riguarda i nomi dei campi, che può essere mappato camelCase utilizzando la funzione di alias di schema YAML file (nome: user_id come userId).
Quindi, è tutto quello che c'è? Non c'è modo di ottenere rispetto per il caso sulla generazione di Yaml, ma posso modificare manualmente lo YAML usando l'aliasing? –

+0

Cribbio, di cosa si tratta pubblicando una domanda che fa emergere le risposte? La stessa risposta di cui sopra (http://stackoverflow.com/questions/1501501/doctrine-orm-models-not-respecting-case/1620387#1620387) note "Inoltre, è possibile automatizzare l'alias di campo sviluppando attività personalizzate per Doctrine. ". Cercherò di più e forse un follow-up lì, se necessario. Scusate. [Per favore non mi invidiare. Sono al limite dei privilegi di commento.] –

+1

Sembra che Doctrine_Table :: setColumn() imposta il nome della colonna in lettere minuscole è che non vede un alias lì. –

risposta

2

Sembra che questo sia un bug. Dico questo perché YAML is case sensitive e Doctrine's generateYAMLFromModels()is documented to be case sensitive. Ho trovato uno case sensitivity bug che era in versione beta 2.0. Forse questo è il bug che ha colpito il tuo programma. Escludendo qualsiasi altra cosa, però, sembra che un commento di Dimitris Baltas' sembra essere il la soluzione di scelta:

un'altra alternativa è quella di generare modelli da DB e poi YAML dai modelli. Questo mantiene l'involucro giusto.

Felice Caccia :)

Problemi correlati