2012-07-31 49 views
0

我想用manyToMany关系添加2个同一对象的实例。ManyToMany的2个实例用于同一类中的同一实体

class A { 

    /** 

* @ORM\ManyToMany(targetEntity="RelatedEntity", inversedBy="teachers", cascade={"persist", "remove"}) 
* @ORM\JoinTable(name="table1", 
*  joinColumns={@ORM\JoinColumn(name="class_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@ORM\JoinColumn(name="related_id", referencedColumnName="id")} 
*  ) 
*/ 
protected $myFirstEntities; 


    /** 

* @ORM\ManyToMany(targetEntity="RelatedEntity", inversedBy="students", cascade={"persist", "remove"}) 
* @ORM\JoinTable(name="table2", 
*  joinColumns={@ORM\JoinColumn(name="class_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@ORM\JoinColumn(name="related_id", referencedColumnName="id")} 
*  ) 
*/ 
protected $mySecondEntities; 
} 



class RelatedEntity 
{ 
    /** 
* 
* @ORM\ManyToMany(targetEntity="A", mappedBy="myFirstEntities", cascade={"persist"}) 
*/ 
protected $teachers; 

    /** 
* 
* @ORM\ManyToMany(targetEntity="A", mappedBy="mySecondEntities", cascade={"persist"}) 
*/ 
protected $students; 

} 

当我使用

 php app/console doctrine:generate:entities MyApp 

程序产生添加名为实体的唯一方法:

public function addRelatedEntity(\MyApp\MyBundle\Entity\RelatedEntity $myFirstEntities) 
{ 
    $this->myFirstEntities[] = $myFirstEntities; 
} 

这样我就可以“T加mySecondEntities我该怎么办。我有可能在手动方法中添加它,但是自动方法是不可能的?

我的问题是我可以使用2个特定类的多个关系到同一个类中吗?我该怎么做?

回答

0

学说:生成:应该是用来当你需要生成实体的一个时间单位,它不保证生成的映射将是100%正确的,http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/tools.html#entity-generation

此命令不适用于持续使用。它是一个小帮手 ,并不能很好地支持所有的映射边缘情况。使用此命令后,您仍然需要在您的实体中放置工作。

你可以有很多映射到多为同一类,只是做手工

public function addFirstEntity(\MyApp\MyBundle\Entity\RelatedEntity $myFirstEntities) 
{ 
    $this->myFirstEntities[] = $myFirstEntities; 
} 

public function addSecondEntity(\MyApp\MyBundle\Entity\RelatedEntity $mySecondEntities) 
{ 
    $this->mySecondEntities[] = $mySecondEntities; 
}