进入Doctrine 2 Documentation解释所有方面和反面进入ManyToMany关系并说:
对于ManyToMany双向关系,任何一方都可能是 拥有一方(定义@JoinTable的一方和/或没有 使用mappedBy属性,因此使用默认的连接表。)
这是否意味着我可以在不使用inversedBy和mappedBy的情况下编写注释 参考ManyToMany关系的所有方和ManyToMany关系的反面?
前:
我可以写下:加盟实体
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="Category")
*
*/
private $categories;
和
类别实体
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="Affiliate")
* @ORM\JoinTable(name="category_affiliate")
*
*/
private $afflitiates;
而不是写:
加盟实体
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="Category", mappedBy="afflitiates")
*
*/
private $categories;
和
类别实体
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="Affiliate",inversedBy="categories")
* @ORM\JoinTable(name="category_affiliate")
*
*/
private $afflitiates;
答案 0 :(得分:3)
包含多对多关系,你可以选择任何一方作为你自己的一方而另一方自动变成反方。但是,请尝试检查哪些实体会频繁触发以获取对象并管理您自己的实体
答案 1 :(得分:0)
我的摘要作为问题的答案:
(1)首先,确定拥有方。例如,Category实体是拥有/ map side,因此InverseBy这个$ category + JoinTable
(2)因此,会员实体是反面的,因此MappedBy这个$ affiliate。
另一种方式:
(1)InversedBy(2)使用(1a)+ JointTable
(2)MappedBy(1)使用(2a)
这些措辞使我们感到困惑。
d