-
Héritage avec doctrine
Bonjour,
Je suis en cours de réalisation d'une app web et j'ai un soucis d'héritage avec doctrine.
J'ai 3 classes, Membre, Prof, Eleves qui héritent de Personne.
Le problème est que ces relations peuvent ne pas être exclusives.
Une personne peut être juste soit membre, prof, élève ou une combinaison des 3 ( (prof et membre), (membre et eleve) , ... ).
Doctrine dans ses héritages ne me propose rien qui m'intéresse.
J'ai retourné le problème dans tous les sens depuis quelques jours, et j'aurais aimé un avis sur ma solution.
=> Je laisse tomber l'héritage "classique", j'aurais 4 classes concrètes et des relations OneToOne entre mes objets.
Est-ce une solution élégante et envisageable ? Ou alors je n'ai pas encore assez réfléchi au problème.
Merci
-
Bonjour,
Quelles sont les informations que tu as besoin sur Personne, élève membre et prof?
L'utilité de l'héritage se pose effectivement...
-
Pour personne, j'ai des champs standards (prénom; nom, .... )
Pour membre, prof, élève j'ai quelques booléen ( actif, .. ).
J'étais parti à la base sur un découpage pour éviter d'avoir une table unique d'où partent tout un tas de relations qui parfois seraient à NULL.
Ca faisait plus "propre" sur papier ^^.
Et aussi avoir une gestion plus facile des utilisateurs. Ex : Un membre a accès au forum, à l'agenda de réunions, ...
Un prof au planning de ses classes, un élève à pas grand chose mais on aura les infos de ses parents par exemple.
Ou alors je dois revenir vers ce schéma de big table d'ou part tout.
-
Il faut que tu mettes tes relations propriétaires OneToOne du côté de membre, prof et élève...Du coup, il n'y a pas de nullité.
Un membre, prof ou élève est obligatoirement rattaché à une personne.
Je ne suis pas une experte en symfony mais je pense que j'aurais fait comme ça...
-
J'ai laissé tomber l'héritage avec doctrine.
J'ai du O2O entre mes classes, ca fonctionne.
Merci :)
-
Il n'y'a pas d’intérêt d'héritage ou de table commune Personne dans ton cas.
Tes personnes sont des entités qui n'ont rien de commun au sens métier. Elles ont juste des informations que tu souhaite factoriser.
Si tu ne veux pas dupliquer les informations communes (addresses, informations de connections) il te suffit de faire une table d'adresse reliés avec les profs, les élèves les membres etc..
A ta place je laisserai tomber la table personne qui n'a aucune utilité de mon point de vue.