Bonjour,

J'utilise l'Inheritance Mapping de doctrine2 en mode "JOINED" avec "discriminator column" = "type" comme décrit ici inheritance-mapping.html

La création des tables et l'enregistrement de données marchent bien mais je n'arrive pas à récupérer les données d'un seul type.

Si j'exécute :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
$this->getDoctrine()
    ->getRepository('MonBundle:MaTableMere')
    ->findByType('type_de_la_classe_fille');
sans définir la propriété type comme un champ de ma base:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
/**
     * @var string $type
     *
     */
private $type;
une exception est levée : "Entity MonBundle\Entity\MaTableMere has no field 'type'. You can therefore not call 'findByType' on the entities' repository".

Si maintenant je définit type comme un champ de ma base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
/**
     * @var string $type
     *
     * @ORM\Column(name="type", type="string", length=50, nullable=true)
     */
private $type;
et que j'execute l'instruction ci dessus, une autre exception est levée :
"Duplicate definition of column 'type' on entity 'MonBundle\Entity\MaTableMere' in a field or discriminator column mapping."

Ma question est donc, comment faire un select * where type = 'type_de_la_classe_fille' dans ce genre d'architecture ?

Merci d'avance pour votre aide.