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 :

Récupération des objets d'une association bidirectionnelle


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 15
    Par défaut Récupération des objets d'une association bidirectionnelle
    Slt tout le monde.
    Je suis un débutant avec symfony2
    j'ai créer pour essayer deux entités "Facture" et "Produit" dont la l'association et @ManyToMany bidirectionnelle.
    le problème est lors de la récupération des objets :
    quand je fais : facture->getProduits(); j’obtiens des résultats mais le coté inverse produit->getFactures() déclenche des erreurs dans le template

  2. #2
    Membre émérite
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Par défaut
    Bonjour,

    Il faut regarder du coté des annotations, il faut pointer sur les bons champs.

  3. #3
    Membre actif
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Par défaut
    Peux tu nous poster le code (afin de voir les annotations) des classe produits et factures STP

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 15
    Par défaut
    Voici mes entités :
    entité Facture :
    <?php

    namespace BB\FactBundle\Entity;
    use Doctrine\ORM\Mapping as ORM;

    /**
    * BB\FactBundle\Entity\Facture
    * @ORM\Table()
    * @ORM\Entity(repositoryClass="BB\FactBundle\Entity\FactureRepository")
    */
    class Facture
    {
    /**
    * @var integer $id
    * @ORM\Column(name="id", type="integer")
    * @ORM\Id
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    private $id;

    /**
    * @ORM\ManyToMany(targetEntity="BB\FactBundle\Entity\Produit", inversedBy="Facture")
    * @ORM\JoinTable(name="facture_produit")
    */
    private $produits;

    /**
    * @var \DateTime $date
    * @ORM\Column(name="date", type="date")
    */
    private $date;


    /**
    * Get id
    * @return integer
    */
    public function getId()
    {
    return $this->id;
    }

    /**
    * Set date
    * @param \DateTime $date
    * @return Facture
    */
    public function setDate($date)
    {
    $this->date = $date;

    return $this;
    }

    /**
    * Get date
    * @return \DateTime
    */
    public function getDate()
    {
    return $this->date;
    }
    /**
    * Constructor
    */
    public function __construct()
    {
    $this->produits = new \Doctrine\Common\Collections\ArrayCollection();
    }

    /**
    * Add produit
    * @param BB\FactBundle\Entity\Produit $produit
    * @return Facture
    */
    public function addProduit(\BB\FactBundle\Entity\Produit $produit)
    {
    $this->produits[] = $produit;
    $produit->addFacture($this);

    return $this;
    }

    /**
    * Remove produit
    * @param BB\FactBundle\Entity\Produit $produit
    */
    public function removeProduit(\BB\FactBundle\Entity\Produit $produit)
    {
    $produit->removeFacture($this);
    $this->produits->removeElement($produit);
    }

    /**
    * Get produits
    * @return Doctrine\Common\Collections\Collection
    */
    public function getProduits()
    {
    return $this->produits;
    }
    }
    entité Produit :
    <?php

    namespace BB\FactBundle\Entity;
    use Doctrine\ORM\Mapping as ORM;

    /**
    * BB\FactBundle\Entity\Produit
    * @ORM\Table()
    * @ORM\Entity(repositoryClass="BB\FactBundle\Entity\ProduitRepository")
    */
    class Produit
    {
    /**
    * @var integer $id
    * @ORM\Column(name="id", type="integer")
    * @ORM\Id
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    private $id;

    /**
    * @ORM\ManyToMany(targetEntity="BB\FactBundle\Entity\Facture", mappedBy="Produit")
    * @ORM\JoinColumn(name="produit_id", referencedColumnName="id")}
    */
    private $factures;

    /**
    * @var string $nom
    * @ORM\Column(name="nom", type="string", length=15)
    */
    private $nom;


    /**
    * Get id
    * @return integer
    */
    public function getId()
    {
    return $this->id;
    }

    /**
    * Set nom
    * @param string $nom
    * @return Produit
    */
    public function setNom($nom)
    {
    $this->nom = $nom;

    return $this;
    }

    /**
    * Get nom
    * @return string
    */
    public function getNom()
    {
    return $this->nom;
    }
    /**
    * Constructor
    */
    public function __construct()
    {
    $this->factures = new \Doctrine\Common\Collections\ArrayCollection();
    }

    /**
    * Add facture
    * @param BB\FactBundle\Entity\Facture $facture
    * @return Produit
    */
    public function addFacture(\BB\FactBundle\Entity\Facture $facture)
    {
    $this->factures[] = $facture;

    return $this;
    }

    /**
    * Remove facture
    * @param BB\FactBundle\Entity\Facture $facture
    */
    public function removeFacture(\BB\FactBundle\Entity\Facture $facture)
    {
    $this->factures->removeElement($factur);
    }

    /**
    * Get facture
    * @return Doctrine\Common\Collections\Collection
    */
    public function getFactures()
    {
    return $this->factures;
    }
    }
    et voici la méthode de récupération depuis le controloeur :
    public function indexAction($fid, $pid)
    {
    $em = $this->getDoctrine()->getEntityManager();

    $factrep = $em->getRepository("BBFactBundle:Facture");
    $fact = $factrep->find($fid);
    $prods = $fact->getProduits();

    $prodrep = $em->getRepository("BBFactBundleroduit");
    $prod = $prodrep->find($pid);
    $facts = $prod->getFactures();

    return $this->render('BBFactBundleefault:index.html.twig', array('prods' => $prods,'facts'=>$facts));
    }

  5. #5
    Membre actif
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Par défaut
    Les propriétés/attributs "mappedBy" et "inversedBy"

    correspondent respectivement au nom de la propriété dans l'autre objet

    en l'ocurence dans ton cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class Facture
    {
    /**
    * @ORM\ManyToMany(targetEntity="BB\FactBundle\Entity\Produit", inversedBy="factures")
    * @ORM\JoinTable(name="facture_produit")
    */
    private $produits;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class Produit
    {
    /**
    * @ORM\ManyToMany(targetEntity="BB\FactBundle\Entity\Facture", mappedBy="produits")
    * @ORM\JoinColumn(name="produit_id", referencedColumnName="id")}
    */
    private $factures;
    }
    Pour plus d'infos :

    http://docs.doctrine-project.org/en/...-bidirectional

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 15
    Par défaut
    Merci L0rD59.
    c'était bien la faute que j'ai commis, je n'ai pas bien suivi le tuto.

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

Discussions similaires

  1. Problème à la récupération des objets associés
    Par LinC49 dans le forum Doctrine2
    Réponses: 15
    Dernier message: 10/12/2012, 19h23
  2. VB6: Récupération des meta d'une page HTML avec HTMLDocument
    Par Matounet dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 22/09/2011, 07h55
  3. exporter des objets d'une base vers une autre
    Par RGShoop dans le forum Access
    Réponses: 3
    Dernier message: 07/09/2005, 11h52
  4. Récupération des paramètres d'une requête
    Par TomPad dans le forum Access
    Réponses: 10
    Dernier message: 16/06/2005, 15h11
  5. Récupération des paramètres avec une procedure stockée
    Par samlerouge dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/03/2004, 22h00

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