跨项目实体的一对多关系(Symfony2 / Doctrine) [英] OneToMany Relation on cross project entities (Symfony2/Doctrine)

查看:135
本文介绍了跨项目实体的一对多关系(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆