问题
我正在使用Symfony2和Doctrine2(注释)建立数据库.我完全按照示例(Doctrine2 relationship documentation),但不知何故,当我更新我的架构(doctrine:schema:update –force)时,它会创建两个额外的表.
码
文章实体:
/** * * @var \Doctrine\Common\Collections\ArrayCollection $districts * * @ORM\ManyToMany(targetEntity="District",inversedBy="articles") * @ORM\JoinTable(name="articles_districts",* joinColumns={@ORM\JoinColumn(name="article_id",referencedColumnName="id")},* inverseJoinColumns={@ORM\JoinColumn(name="district_id",referencedColumnName="id")} * ) */ protected $districts;
区实体:
/** * * @var \Doctrine\Common\Collections\ArrayCollection $articles * @ORM\ManyToMany(targetEntity="Article",inversedBy="districts") */ protected $articles;
题
正在创建的两个额外表是:articles_districts(我在JoinTable部分中指定的那个)和article_district(另一个以某种方式自动创建).
articles_districts表按预期工作,并在创建新条目时插入ID. article_district仍然是空的,因此很没用.我怎么摆脱它?
您的分区实体应使用mappedBy注释:
/** * * @var \Doctrine\Common\Collections\ArrayCollection $articles * @ORM\ManyToMany(targetEntity="Article",mappedBy="districts") */ protected $articles;
目前,您正在尝试为您的实体关系设置两个拥有方:http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html#many-to-many-bidirectional