2012-08-02 81 views
1

任何人都知道如何在2个项目中完成OneToMany关系(假设跨数据库明智,都有自己的项目结构,名称空间和数据库)。OneToMany关于跨项目实体的关系(Symfony2/Doctrine)

比方说,我有一个实体项目A:

Movie.php(实体项目A)

class Movie { 

    // ... some other properties 

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

    // ... 

并形成其他单位在项目B:

Moviechild.php (实体项目B)

class Moviechild { 

    // ... 

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

    // ... 

回答

2

您必须在项目A的AppKernel内实例化ProjectBBundle,反之亦然。

然后使用正确的命名空间内部targetEntity属性注释:

Movie.php(实体项目A)

namespace ProjectABundle\Entity; 

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

    // ... 

Moviechild.php(实体项目B)

namespace ProjectBBundle\Entity; 

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

    // ... 
+0

它适合你吗需要? – Florent 2012-08-10 09:08:09

+0

是的,谢谢Florent,其实我不得不以不同的方式做,因为这个项目正在改变。但感谢您的回答,我非常感谢!最好 – Mike 2012-09-12 12:38:27