|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : août 2009 Messages : 24 ![]() |
Bonjour à tous,
Je suis actuellement sur une problématique de génération de schéma / formulaire / admin generator dont je n'arrive pas à me sortir. L'idée est d'avoir une classe Parent, deux classes Fils1 et Fils2, la classe parent étant relié à une table ProprieteParent sous formes 1-n ( un parent à une ou plusieurs propriétés ), et les classes Fils1 et Fils2 définissant des champs supplémentaires et des relations 1-n ou n-m supplémentaires (ouf) Voici l'idée du schéma: Code :
Déjà, sans vouloir cracher dans la soupe de Doctrine qui jusqu'ici m'avait servit fidèlement, les modèles d'héritage sont vraiment trop simpliste ou pas assez paramétrable. J'aurais préféré ici passer par de l'héritage "concrete", mais la relation 1-n sur la table Parent me l'interdit, car cette table ne sera jamais remplis, donc pas de match d'ID possible entre les deux tables. Quoiqu'il en soit, ce schéma fonctionne, mais mon problème est que la génération automatique du schéma me créé un formulaire Parent qui contient tout les champs des tables Fils1 et Fils2, et que ainsi, quand j'affiche le formulaire du Fils1 ou Fils2, il contient tout les champs de Parent+Fils1+Fils2. Y aurait'il un point qui m'aurait échapper ou faut il que je redéfinisse dans chacun de mes forms fils la liste des champs à réellement afficher ? Ce behavior n'est il pas justement censé répondre à cette attente en stockant les bons attributs et méthodes dans les classes fils et ne pas tout bourrés dans la classe parente sans distinction ? Cela revient à créer une table qui contiendrait elle-même tout les champs, cette héritage me semble vraiment très pauvre et cela m'étonne Merci d'avance |
||
|
|
00
|
|
|
#2 | |||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 769 ![]() |
Citation:
Code :
|
|||
|
|
10
|
|
|
#3 | |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 769 ![]() |
... et en complément, comme me le signale fort diplomatiquement Michel par MP :
Citation:
|
|
|
|
00
|
|
|
#4 | |||
|
Futur Membre du Club
![]() Inscription : août 2009 Messages : 24 ![]() |
Citation:
Quoiqu'il en soit, le type de problématique que je décris n'est visiblement pas solutionable via l'héritage Doctrine couplé à Symfony qui est bien trop simpliste. Pour ceux qui rencontrerait ce type de problématique, la meilleure solution est sans doute de passer par une relation one-to-one comme ceci: Code :
Permet d'embed le parent dans les fils et de tout faire ( magie magie ). Ainsi on edite le père et l'enfant en même temps, cela réplique un fonctionnement d'heritage, et permet de gérer toutes les problématiques décrites avant, soit: > Relations 1-n, n-1, n-m sur le père > Relations 1-n, n-1, n-m sur les enfants, qui peuvent être différentes > Intégration simple, efficace, propre et sans réécriture massive dans Symfo > BDD sans réplicaton massive, découpage logique et propre des tables En esperant que ca puisse aider |
|||
|
|
00
|
|
|
#5 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Effectivement, l'héritage n'est pas vraiment fait pour régler des problèmes aussi lourd de relation.
Avec ce type d'héritage, il n'y a qu'une table physique sous-jacente, ce que tend à faire oublier le modèle objet. Toutes les relations de tout les enfants doivent s'y retrouver et y cohabiter (dans la table physique) ce qui n'est souvent pas possible. La solution que tu proposes me semble le meilleur compromis.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
Copyright © 2000-2012 - www.developpez.com