Hello
Comme dit dans le titre, j'aimerai mettre en place plusieurs entités dont les attributs sont dans une même table
Par exemple, j'ai ma classe "employe" : nom, prenom...
et je voudrai créer une autre classe "candidat" qui aurait les mes attributs qu' employé plus d'autres (date de candidature..)
J'avais trouvé Inheritance de doctrine
J'ai bien une table pour mes entités, mais doctrine ajoute une clause automatique where class_name in ('employe', 'candidature')
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="classname", type="string") * @ORM\DiscriminatorMap({"employe" = "employe", "candidat" = "Candidat"})
ce qui est logique, mais je n'arrive pas à forcer cette clause
si je fais
J'ai l'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $qb->andWhere('e.class_name = :class') ->setParameter('class', "employe");
pourtant dans ma table ce champ existe bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2Entity\Employe has no field or association named class_name
et j'ai même créer dans mon entity un
mais ca va pas mieux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 protected $class_name; public function getClassName() { return $this->class_name; }
Comment faire ?
Et est ce la bonne méthode dans mon cas en utilisant l'inheritance ?
J'ai essayé en passant par une class abstract mais d'office j'ai plussieurs table qui se crée
Merci
Partager