2009-10-01 4 views
2

J'ai une table de base de données mysql appelée UserDegree, quand j'essaie de réimporter en PHP en utilisant Doctrine, elle génère un nom de modèle Userdegree, est-il possible de résoudre ce problème?Doctrine ORM: Modèles ne respectant pas le cas

Je ne trouve vraiment aucune bonne documentation de doctrine.

merci!

Répondre

2

Je ne suis pas sûr de votre problème spécifique, mais pour la partie "documentation de bonne doctrine", avez-vous essayé le manuel? Voir Doctrine ORM for PHP - Je pense que c'est en fait assez bon, surtout comparé à ce que vous obtenez avec d'autres projets, qui n'ont pas beaucoup de documentation, ou totalement obsolètes. A propos de votre problème (comme je l'ai déjà dit, pas sûr): Je suppose que Doctrine prend chaque "mot" du nom de la table dans la base de données, et convertit cela en un "nom" pour PHP. Très souvent, les "mots" dans les noms de tables sont séparés par un trait de soulignement "_", et sont tous dans le bas ou dans les deux cas.

Je suppose que, si vous nommez votre table « user_degree », au lieu de « UserDegree », que la doctrine doit détecter il est composé de deux « mots » et créer une classe PHP appelé « UserDegree » - en fait, j'ai testé avec une table appelée post_has_tag, et il génère une classe appelée PostHasTag.

1

Pascal Martin a raison. La table doit être nommée comme user_degree, dans ce cas Doctrine générera la classe UserDegree.

J'ai également récemment découvert qu'il est possible de garder tous les identifiants de base de données à under_scores, tout en ayant Doctrine pour générer du code camelCase'd. Cela arrive automatiquement pour les noms de tables, comme dit plus haut. En ce qui concerne les noms de champs, ils peuvent être mappés sur camelCase en utilisant la fonction alias du fichier de schéma YAML (nom: id_utilisateur en tant qu'utilisateurId). De plus, vous pouvez automatiser l'alias de champ en développant une tâche personnalisée pour Doctrine.

Questions connexes