Symfony 2 Doctrine 2使用inversedBy和mappedBy进入ManyToMany关系?

时间:2013-11-20 16:39:58

标签: php symfony doctrine-orm doctrine symfony-2.3

进入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;

2 个答案:

答案 0 :(得分:3)

包含多对多关系,你可以选择任何一方作为你自己的一方而另一方自动变成反方。但是,请尝试检查哪些实体会频繁触发以获取对象并管理您自己的实体

答案 1 :(得分:0)

我的摘要作为问题的答案:

(1)首先,确定拥有方。例如,Category实体是拥有/ map side,因此InverseBy这个$ category + JoinTable

(2)因此,会员实体是反面的,因此MappedBy这个$ affiliate。

另一种方式:

(1)InversedBy(2)使用(1a)+ JointTable

(2)MappedBy(1)使用(2a)

这些措辞使我们感到困惑。

d