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 :

Probleme de relation manyTomany


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Par défaut Probleme de relation manyTomany
    Bonjour,

    Je suis bloqué depuis plusieurs heures sur la création d'une relation manyTomany,
    La creation de la table intermediaire par doctrine se fait bien, mais lorsque je fais une requete avec un var_dump de l'objet doctrine, mon navigateur plante comme si l'objet bouclé alors que j'ai que deux enregitrements en table, sur une autre entité pas de problème cela affiche correctement mes deux object sur la page mais elle n'a pas de relation.

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
     
    namespace Raptor\CmsrefBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * Client
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="Raptor\CmsrefBundle\Entity\ClientRepository")
     */
    class Client
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
        /**
         * @var string
         *
         * @ORM\Column(name="societe", type="string", length=255)
         */
        private $societe;
     
        /**
         * @var string
         *
         * @ORM\Column(name="tel", type="string", length=255)
         */
        private $tel;
     
        /**
         * @ORM\ManyToMany(targetEntity="Activite", inversedBy="activites", cascade={"persist"})
         * @ORM\JoinTable(name="client_activite",
         *      joinColumns={@ORM\JoinColumn(name="client_id", referencedColumnName="id")},
         *      inverseJoinColumns={@ORM\JoinColumn(name="activite_id", referencedColumnName="id")}
         *      )
         **/
        private $activites;
     
        /**
         * Get id
         *
         * @return integer
         */
     
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Set societe
         *
         * @param string $societe
         * @return Client
         */
        public function setSociete($societe)
        {
            $this->societe = $societe;
     
            return $this;
        }
     
        /**
         * Get societe
         *
         * @return string 
         */
        public function getSociete()
        {
            return $this->societe;
        }
        /**
         * Constructor
         */
        public function __construct()
        {
            $this->activites = new \Doctrine\Common\Collections\ArrayCollection();
        }
     
        /**
         * Set tel
         *
         * @param string $tel
         * @return Client
         */
        public function setTel($tel)
        {
            $this->tel = $tel;
     
            return $this;
        }
     
        /**
         * Get tel
         *
         * @return string 
         */
        public function getTel()
        {
            return $this->tel;
        }
     
        /**
         * Add activites
         *
         * @param \Raptor\CmsrefBundle\Entity\Activite $activites
         * @return Client
         */
        public function addActivite(\Raptor\CmsrefBundle\Entity\Activite $activites)
        {
            $this->activites[] = $activites;
     
            return $this;
        }
     
        /**
         * Remove activites
         *
         * @param \Raptor\CmsrefBundle\Entity\Activite $activites
         */
        public function removeActivite(\Raptor\CmsrefBundle\Entity\Activite $activites)
        {
            $this->activites->removeElement($activites);
        }
     
        /**
         * Get activites
         *
         * @return \Doctrine\Common\Collections\Collection 
         */
        public function getActivites()
        {
            return $this->activites;
        }
    }

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
     
     
    namespace Raptor\CmsrefBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * Activite
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="Raptor\CmsrefBundle\Entity\ActiviteRepository")
     */
    class Activite
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
        /**
         * @var string
         *
         * @ORM\Column(name="nom", type="string", length=255)
         */
        private $nom;
     
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Set nom
         *
         * @param string $nom
         * @return Activite
         */
        public function setNom($nom)
        {
            $this->nom = $nom;
     
            return $this;
        }
     
        /**
         * Get nom
         *
         * @return string 
         */
        public function getNom()
        {
            return $this->nom;
        }
    }
    Fonction de mon contrôleur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $em = $this->getDoctrine()->getManager();
    		$clients = $em->getRepository('RaptorCmsrefBundle:Client')->findAll();
    		var_dump($clients);die;

  2. #2
    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 lance app_dev.php
    Salut !

    Que donne le debug de symfony ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut
    salut !

    un var_dump sur un objet doctrine peut renvoyer énormément d'infos et donc faire planter le navigateur même si tu n'as que 2 enregistrements, surtout s'il y a beaucoup d'associations

    Sinon tes annotations pour $activites ne sont pas bonnes

    ton inversedBy="activites" suggère que dans l'entité cible il y ait un attribut nommé $activtes ce qui n'est pas le cas. Tu as fait un mixe malencontreux entre un ManyToMany unidirectionnel et bidirectionnel

    regarde la doc de doctrine:
    http://docs.doctrine-project.org/pro...unidirectional

    (fais attention à bien mettre comme ce que tu as fait à présent tes @ORM obligatoire dans le cadre de Symfony2 avec use Doctrine\ORM\Mapping as ORM; )

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Par défaut
    Citation Envoyé par saillantist Voir le message
    salut !

    un var_dump sur un objet doctrine peut renvoyer énormément d'infos et donc faire planter le navigateur même si tu n'as que 2 enregistrements, surtout s'il y a beaucoup d'associations

    Sinon tes annotations pour $activites ne sont pas bonnes

    ton inversedBy="activites" suggère que dans l'entité cible il y ait un attribut nommé $activtes ce qui n'est pas le cas. Tu as fait un mixe malencontreux entre un ManyToMany unidirectionnel et bidirectionnel

    regarde la doc de doctrine:
    http://docs.doctrine-project.org/pro...unidirectional

    (fais attention à bien mettre comme ce que tu as fait à présent tes @ORM obligatoire dans le cadre de Symfony2 avec use Doctrine\ORM\Mapping as ORM; )
    merci pour vos réponses, le debug ne donnait rien(navigateur plante), par contre j'arrive a accéder à mes objtes via les méthodes, c'est juste que quand je fais un var_dump sur mon object ca par dans les choux alors que sur mon entité activité ca fonctionne, le var_dump m'affiche que mes deux objects. (2 enregistrements en base)

    je fais le test de retirer ma coquille de bidirectionelle

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Par défaut
    Avec le navigateur chrome, j'arrive à voir ce qu'il fait, cela s’arrête jamais ça défile.
    voici un screen
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/02/2009, 01h37
  2. probleme de relation table-formulaire
    Par kumo dans le forum VBA Access
    Réponses: 4
    Dernier message: 06/06/2007, 11h04
  3. Probleme de relations dans une base access.
    Par fredhali2000 dans le forum Access
    Réponses: 6
    Dernier message: 21/02/2006, 16h36
  4. access2000, probleme creation relations de tables
    Par nono_60 dans le forum Access
    Réponses: 2
    Dernier message: 12/09/2005, 22h50
  5. Probleme de relation
    Par pod1978 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 30/03/2005, 15h45

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