Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-04-2014 10:10:50

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

[Résolu] Class Table Inheritance dtype indésirable

Bonjour,

J'ai généré mes entités à partir d'une base de données existante grâce à Doctrine 2, mais il se trouve qu'il ne reconnait pas l'héritage et fait un mapping de chaque table comme des tables à part entière.

Pour y remédier, j'ai donc modifié les entités concernées pour qu'elles prennent en compte l'héritage. Cependant, lorsque j'utilise l'outil de validation de schéma, Doctrine 2 me valide mes entités, mais pas sa concordance avec la base de données !

J'ai essayé de générer la base de données à partir des entités pour voir comment Doctrine 2 s'y prenait pour gérer l'héritage et j'ai vu qu'il créait un champ "dtype" dans la classe parent.

Peut-on se passer de ce champ ? Si oui, comment s'y prendre ? Si non, y-a-t-il d'autres alternatives pour mapper mon héritage ?

Dernière modification par Seryus (11-04-2014 11:07:10)

Hors ligne

 

#2 11-04-2014 10:22:37

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Résolu] Class Table Inheritance dtype indésirable

Salut, je n'ai pas fait beaucoup d'héritage mais sur les fois où je l'ai fait j'avais la colonne. C'est ce qui permet à doctrine de savoir comment faire la jointure wink.

Hors ligne

 

#3 11-04-2014 10:34:08

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: [Résolu] Class Table Inheritance dtype indésirable

Je ne peux pas faire autrement dans ce cas ? Quel genre d'informations Doctrine stocke dans ce champ ? Le nom de la table enfant ?
Ça me parait bizarre, normalement on utilise une colonne "type" pour un héritage où on fusionne les table enfants dans le parent (avec des champs à null).

J'ai aussi un autre problème concernant les identifiants des enfants : Doctrine considère que les identifiants des enfants a le même nom que l'identifiant du parent. Or l'identifiant des enfants est une clé étrangère qui pointe vers le parent, je le nomme donc différemment dans la base (nom_de_la_table_référencée_id). Doctrine peut-il gérer ce cas ?

Hors ligne

 

#4 11-04-2014 10:40:59

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Résolu] Class Table Inheritance dtype indésirable

Tu dois avoir deux méthodes pour l'héritage mais je maitrise pas assez pour t'aiguiller là dessus. Je t'encourage à chercher un peu sur la doc tu vas trouver je me souviens l'avoir lu. C'est juste pas facile à trouver :p. Mais tu peux faire les 2 c'est sûr. En fait le dtype correspond à la colonne type wink

Hors ligne

 

#5 11-04-2014 11:06:27

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: [Résolu] Class Table Inheritance dtype indésirable

Après relecture de la doc (http://doctrine-orm.readthedocs.org/en/ … nheritance) il semblerait qu'il ne soit pas possible de faire autrement, et le champ "dtype" contient bien le nom de l'entité enfant (ou l'alias spécifié dans DiscriminatorMap d'après ce que j'ai compris).

Je pensais que la phrase

Doctrine2 a écrit:

Doctrine 2 implements this strategy through the use of a discriminator column in the topmost table of the hierarchy because this is the easiest way to achieve polymorphic queries with Class Table Inheritance.

sous entendait "Il y a d'autres méthodes, mais celle-ci est la plus simple à mettre en place".

Doctrine ne tolère pas vraiment les standards de la modélisation au final, il faut à chaque fois modifier la base pour ses besoins sad

Merci quand même pour ton aide !

Dernière modification par Seryus (11-04-2014 11:06:55)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages