2012-08-02 5 views
1

Tout le monde sait comment accomplir une relation OneToMany dans 2 projets (disons cross-base de données sage, les deux ont leur propre structure de projet, espaces de noms et base de données).OneToMany Relation sur les entités inter-projet (Symfony2/Doctrine)

Disons que j'ai une entité dans le projet A:

Movie.php (Entité projet A)

class Movie { 

    // ... some other properties 

    /** 
    * @ORM\OneToMany(targetEntity="Moviechild/Project B", mappedBy="movie") 
    */ 
    protected $moviechilds; 

    // ... 

et une autre entité dans le projet B:

Moviechild.php (Entité Projet B)

class Moviechild { 

    // ... 

    /** 
    * @ORM\ManyToOne(targetEntity="Movie/Project A", inversedBy="moviechilds") 
    * @ORM\JoinColumn(name="movie_id", referencedColumnName="id") 
    */ 
    protected $movie; 

    // ... 

Répondre

2

Vous devez instancier ProjectBBundle dans le projet A AppKernel et vice versa.

Puis utiliser les espaces de noms corrects à l'intérieur targetEntity annotation de la propriété:

Movie.php (Entité projet A)

namespace ProjectABundle\Entity; 

class Movie { 
    /** 
    * @ORM\OneToMany(targetEntity="ProjectBBundle\Entity\Moviechild", mappedBy="movie") 
    */ 
    protected $moviechilds; 

    // ... 

Moviechild.php (Entité projet B)

namespace ProjectBBundle\Entity; 

class Moviechild { 
    /** 
    * @ORM\ManyToOne(targetEntity="ProjectABundle\Entity\Movie", inversedBy="moviechilds") 
    * @ORM\JoinColumn(name="movie_id", referencedColumnName="id") 
    */ 
    protected $movie; 

    // ... 
+0

Cela vous convient-il? R a besoin? – Florent

+0

Oui merci Florent, en fait, je devais le faire différemment, car le projet était en train de changer. Mais merci pour votre réponse, j'apprécie beaucoup! Meilleur – Mike

Questions connexes