IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Class Table Inheritance [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 187
    Points : 126
    Points
    126
    Par défaut Class Table Inheritance
    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.
    Seulement le tout venant a été piraté par les mômes... Qu'est-ce qu'on fait, on s' risque sur le bizard ???

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour
    As tu essayé en DQL avec le mot clé INSTANCE OF
    http://docs.doctrine-project.org/pro...-language.html (juste avant la section "partial Object syntax")

    tu peux également tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $dql='SELECT e FROM MyBundle:maClasseFille e';
    $em->createQuery($dql)->getResult();
    //ou bien
    $em->getRepository('MyBundle:maClassFille')->findAll();

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 187
    Points : 126
    Points
    126
    Par défaut
    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //ou $type correspond au type de ma classe fille et t la table mère
    ->where('t INSTANCE OF MonBundle:' . ucfirst($type))
    ça fonctionne parfaitement.

    Merci beacoup.
    Seulement le tout venant a été piraté par les mômes... Qu'est-ce qu'on fait, on s' risque sur le bizard ???

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Héritage (single-table inheritance)
    Par Javix dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 27/01/2009, 14h04
  2. Utilisation d'une Single Table Inheritance et des migrations
    Par redpopo dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 08/12/2008, 17h55
  3. [UML CLASSES TABLES] Passage des classes aux tables
    Par Trompette83 dans le forum Diagrammes de Classes
    Réponses: 1
    Dernier message: 05/08/2007, 18h53
  4. Mapping classes - tables (outil)
    Par taroudant dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 22/05/2007, 18h09
  5. [Single Table Inheritance] Documentation
    Par seb_asm dans le forum Design Patterns
    Réponses: 2
    Dernier message: 10/03/2005, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo