跨项目实体的OneToMany关系(Symfony2 / Doctrine)

时间:2012-08-02 09:10:44

标签: symfony doctrine

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

假设我在项目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;

    // ...

1 个答案:

答案 0 :(得分:2)

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

然后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;

    // ...