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 :

Conception entités ManyToOne


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Par défaut Conception entités ManyToOne
    Bonjour à tous,

    Je développe un jeu simple et j'ai un problème lors de ma conception.

    J'ai une entité Joueur et une entité Match.

    Dans l'entité Match, j'ai besoin de 2 propriétés Joueur, attaquant et défenseur. Un Joueur ne peut-être que soit attaquant soit défenseur. A priori, chacune de ces propriété aurait une relation ManyToOne avec Joueur. Jusque là ça va. Seulement dans Joueur, pour avoir une relation bidirectionnelle, je vais rajouter une propriété Match avec une relation OneToMany (qui sera une ArrayCollection...), mais que dois-je mettre dans mappedBy :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    /**
         * @ORM\OneToMany(targetEntity="Match", mappedBy="?????")
         */
    Et je ne peux pas mettre 2 propriétés dans Joueur, cela représenterai la même chose et ça n'a pas de sens.

    Merci.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Par défaut
    Pas d'idée?

  3. #3
    Membre éclairé Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 321
    Par défaut
    Salut,

    Une chose que je ne comprends pas :
    Un joueur peut être soit attaquant soir défenseur, là çà va.

    Mais en fait un joueur peut avoir unn statut différent suivant les différents match?

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Par défaut
    Salut,

    Non enfaite un Joueur est soit attaquant, soit défenseur quelque soit le match et un match contient forcément un attaquant et un défenseur.

  5. #5
    Membre éclairé Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 321
    Par défaut
    Bah alors, je ne vois pas le problème :

    Puisque le poste joueur dans les matchs est définitif, tu as donc un attribut poste , comme sexe ou couleurDesYeux. C'est une fois pour toute.

    Du coup tu te retrouve avec simplement deux entités Joueur et Match avec une relation ManyToMany :
    Un joueur peut disputer plusieurs match
    un match est disputé par plusieurs joueurs.

    Donc tu auras une table de liaison avec la combinaison de l'id du joueur et celui du match.

    Je ne voit pas pourquoi tu aurais une entité Poste

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Par défaut
    Oui comme ça sa marche. Ce que moi je voulais c'est bien différentier l'attaquand du défenseur dans l'entité Match et donc avoir des relations OneToMany, mais ce n'est peut-être pas possible.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Par défaut
    Salut !

    Tu peux faire de l'héritage

    Joueur parent de :
    -> attaquant
    -> defenseur

    La doc doctrine : http://docs.doctrine-project.org/en/...le-inheritance

    T'aura ça :


    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
     
    <?php
    namespace MyProject\Joueur;
     
    /**
     * @Entity
     * @Table(name="joueurs")
     * @InheritanceType("SINGLE_TABLE")
     * @DiscriminatorColumn(name="discr", type="string")
     * @DiscriminatorMap({"attaquant" = "Attaquant", "defenseur" = "Defenseur"})
     */
    class Joueur
    {
        /** @Id @Column(type="integer") @generatedValue */
        private $id;
     
        /** @Column(type="string", length=300) */
        private $nom;
     
    }
    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
     
    /**
     * @Entity
     */
    class Attaquant extends Joueur
    {
       /** @Column(type="integer") */
        private $butsmarques;
     
        /** @OneToMany(targetEntity="Match", inversedBy="id") */
        private $matchs;
     
    }
    /**
     * @Entity
     */
    class Defenseur extends Joueur
    {
       /** @Column(type="integer") */
        private $butsencaisses;
     
        /** @OneToMany(targetEntity="Match", inversedBy="id") */
        private $matchs;
    }

    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
     
    /**
     * @Entity
     * @Table(name="matchs")
     */
    class Match
    {
     
        /** @Id @Column(type="integer") @generatedValue */
        private $id;
     
        /** @Column(length=255, nullable=false) */
        private $nom;
     
     
        /**
         * @ORM\ManyToOne(targetEntity="Attaquant", inversedBy="matchs")
         * @ORM\JoinColumn(name="attaquant_id", referencedColumnName="id")
         */
        private $attaquant;
     
    	/**
         * @ORM\ManyToOne(targetEntity="Defenseur", inversedBy="matchs")
         * @ORM\JoinColumn(name="defenseur_id", referencedColumnName="id")
         */
        private $defenseur;
     
    }

    Après pour le formulaire, vois avec la doc

    http://symfony.com/doc/current/cookb...llections.html

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/10/2012, 18h02
  2. [2.x] relations entre entités ManyToOne ou ManyToMany
    Par ziemelitis dans le forum Symfony
    Réponses: 5
    Dernier message: 02/01/2012, 18h19
  3. conception entité - relation
    Par gilles.chaize42 dans le forum ALM
    Réponses: 1
    Dernier message: 02/01/2011, 19h54
  4. conception entitées, historique
    Par LaFik dans le forum Schéma
    Réponses: 2
    Dernier message: 14/06/2006, 15h26
  5. Outils pour la conception d'un modèle Entités-Association
    Par Invité dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 05/04/2005, 10h04

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