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

Doctrine2 PHP Discussion :

Héritage sur plusieurs niveaux


Sujet :

Doctrine2 PHP

  1. #1
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Points : 52
    Points
    52
    Par défaut Héritage sur plusieurs niveaux
    Bonjour,

    J'ai actuellement un souci pour représenter un héritage sur 2 niveau

    - Le concept :

    Je cherche à créer une "contrainte d'accès" composé de 2 dates (début et fin)

    Une date peut être absolue (13 / 05 / 2013) ou relative (+ 20 jours).

    Une date relative peut être soit en fonction d'une date d'inscription) soit en fonction d'une date de dernier message posté (etc..., etc...)

    - Voici les classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    /**
     * @ORM\Entity
     * @ORM\Table(name="et_date")
     * @ORM\InheritanceType("JOINED")
     * @ORM\DiscriminatorColumn(name="type", type="string")
     * @ORM\DiscriminatorMap({"Relative" = "DateRelative", "Absolue" = "DateAbsolue"})
     */
    abstract class Date implements IDate
    {
    	/**
    	 * @ORM\Id
    	 * @ORM\GeneratedValue(strategy="AUTO")
    	 * @ORM\Column(type="integer")
    	 */
    	protected $id;
    }
     
    /**
     * @ORM\Entity
     * @ORM\Table(name="et_date_absolue")
     */
    class DateAbsolue extends Date{}
     
    /**
     * @ORM\Entity
     * @ORM\Table(name="et_date_relative")
     * @ORM\InheritanceType("JOINED")
     * @ORM\DiscriminatorColumn(name="type", type="string")
     * @ORM\DiscriminatorMap({"Inscription" = "DateRelativeInscription", "Message" = "DateRelativeMessage"})
     */
    abstract class DateRelative extends Date implements IDateRelative{}
     
    /**
     * @ORM\Entity
     * @ORM\Table(name="et_date_relative_inscription")
     */
    class DateRelativeInscription extends DateRelative{}
     
    /**
     * @ORM\Entity
     * @ORM\Table(name="et_date_relative_message")
     */
    class DateRelativeMessage extends DateRelative{}
    Le souci avec ce code est que je n'ai pas mon discriminant (type) dans ma table date_relative.

    Je ne sais pas non plus si je suis sur la bonne voie et si c'est bien comme cela qu'il faut procéder.

    D'avance merci,

  2. #2
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Points : 52
    Points
    52
    Par défaut
    Bon en faite cette configuration fonctionne bien !

    je m'étonner de l'absence du discriminant sur ma table "DateRelative" sans vraiment avoir tester.

    Mais en testant cela fonctionne bien, en faite il utilise le discriminant de la table principal "Date"

    Je résous.

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

Discussions similaires

  1. Héritage sur plusieurs niveaux de user control
    Par lila23 dans le forum Silverlight
    Réponses: 6
    Dernier message: 14/09/2011, 15h18
  2. [ZF 1.5] Suppression en cascade sur plusieurs niveaux
    Par Janitrix dans le forum Zend_Db
    Réponses: 12
    Dernier message: 12/05/2008, 02h38
  3. [SQL] Affichage sur plusieurs niveaux
    Par oim dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/12/2007, 14h52
  4. [Hibernate] Héritage sur plusieurs niveaux
    Par srvremi dans le forum Hibernate
    Réponses: 2
    Dernier message: 31/05/2006, 18h39

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