2009-12-14 3 views
0

J'ai un modèle d'objet qui contient une classe avec plusieurs sous-classes. Les sous-classes partagent quelques champs du parent, mais ils ont également leurs propres champs.Doctrine - Récupérer la liste des champs dans la sous-classe obtient tous les champs dans l'ensemble

Je suis en utilisant le type d'héritage column_aggregation faire cela parce que je veux pouvoir polymorphique stocker des objets de type classe parente , mais récupérer des objets des types de sous-classe.

Jusqu'ici, je peux récupérer les objets avec leurs types de sous-classes intacts. Mon problème est que quand j'appelle getColumns() sur n'importe quel de la sous-classe, je obtiens tous les champs pour la table agrégée, ainsi je vois chaque champ de ensemble toutes les sous-classes.

Existe-t-il un moyen d'obtenir uniquement les champs qui appartiennent réellement à la sous-classe ?

Répondre

0

Sur le plan de la conception, la sortie de getColumns() est correcte (elle renvoie simplement toutes les colonnes de la table agrégée). Je pense que Doctrine_Table->getColumns() est inconscient du fait que la table en question a des sous-classes. Essayez d'utiliser Doctrine_Table->getColumnDefinition() ou en dernier recours Doctrine_Table->getColumnOwner($column) pour déduire quelles colonnes appartiennent à quelle sous-classe.

+0

Merci ... J'ai fini par utiliser une approche différente de mon modèle d'entité mais c'est bon à savoir pour le futur. – Sam

+0

... et c'est bon de savoir que c'est faux! Il n'y a aucun moyen de récupérer cette information (sauf analyser schema.yml). Il suffit de regarder votre modèle de base (...) et les classes de table. La table parent définit les colonnes _all_. – fishbone

Questions connexes