跨项目实体的一对多关系(Symfony2 / Doctrine) [英] OneToMany Relation on cross project entities (Symfony2/Doctrine)
问题描述
任何人都知道如何在两个项目中完成一个 OneToMany
关系(假设跨数据库明智,都有自己的项目结构,命名空间和数据库)。
假设我在项目A中有一个实体:
Movie.php(实体项目A) strong>
class Movie {
// ... some其他属性
/ **
* @ ORM\OneToMany(targetEntity =Moviechild / Project B,mappedBy =movie)
* /
protected $ moviechilds;
// ...
项目B中的另一个实体: / p>
Moviechild.php(实体项目B)
class Moviechild {
// ...
/ **
* @ ORM\ManyToOne(targetEntity = 电影/项目A,inversedBy =moviechilds)
* @ ORM\JoinColumn(name =movie_id,referencedColumnName =id)
* /
protected $ movie;
// ...
p>您必须在Project A的 AppKernel
中实例化 ProjectBBundle
,反之亦然。
然后在 targetEntity
属性注释中使用正确的命名空间:
Movie.php(实体项目A)
namespace ProjectABundle\Entity;
class Movie {
/ **
* @ ORM\OneToMany(targetEntity =ProjectBBundle\Entity\Moviechild,mappedBy =movie)
* /
protected $ moviechilds;
// ...
Moviechild.php(Entity项目B)
命名空间ProjectBBundle\Entity;
class Moviechild {
/ **
* @ ORM\ManyToOne(targetEntity =ProjectABundle\Entity\Movie,inversedBy =moviechilds)
* @ ORM\JoinColumn(name =movie_id,referencedColumnName =id)
* /
protected $ movie;
// ...
Anybody knows how to accomplish a OneToMany
relation within 2 projects (let's say cross-database wise, both have their own project structure, namespaces and database).
Let's say I have one Entity in Project A:
Movie.php (Entity Project A)
class Movie {
// ... some other properties
/**
* @ORM\OneToMany(targetEntity="Moviechild/Project B", mappedBy="movie")
*/
protected $moviechilds;
// ...
and another Entity in Project B:
Moviechild.php (Entity Project B)
class Moviechild {
// ...
/**
* @ORM\ManyToOne(targetEntity="Movie/Project A", inversedBy="moviechilds")
* @ORM\JoinColumn(name="movie_id", referencedColumnName="id")
*/
protected $movie;
// ...
You have to instantiate ProjectBBundle
inside Project A's AppKernel
and vice versa.
Then use correct namespaces inside targetEntity
property annotation:
Movie.php (Entity Project A)
namespace ProjectABundle\Entity;
class Movie {
/**
* @ORM\OneToMany(targetEntity="ProjectBBundle\Entity\Moviechild", mappedBy="movie")
*/
protected $moviechilds;
// ...
Moviechild.php (Entity Project B)
namespace ProjectBBundle\Entity;
class Moviechild {
/**
* @ORM\ManyToOne(targetEntity="ProjectABundle\Entity\Movie", inversedBy="moviechilds")
* @ORM\JoinColumn(name="movie_id", referencedColumnName="id")
*/
protected $movie;
// ...
这篇关于跨项目实体的一对多关系(Symfony2 / Doctrine)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!