Symfony2项目中的Doctrine2映射问题

时间:2012-01-02 12:28:35

标签: database database-design annotations symfony doctrine-orm

我有2个实体Item和Itemimage。 Item to Itemimage之间的关系是OneToMany Unidirectional与JoinColumn。我从学说文档中获得了帮助。带有JoinColumn的OneToMany单向是使用ManyToMany注释实现的:

/**
 * @ManyToMany(targetEntity="Itemimage")
 * @JoinTable(name="itemimage",
 *      joinColumns={@JoinColumn(name="item_id", referencedColumnName="id")},
 *      inverseJoinColumns={@JoinColumn(name="image_id", referencedColumnName="itemid")}
 *      )
 */

其中:

  • image_id:itemid是Itemimage实体
  • 中的属性
  • item_id:是“项目实体”的主要键属性

我在Item Entity中创建了一个属性$ images并给它上面的docblock。问题是,当我尝试更新架构时。我得到一个学说错误:“表'itemimage'已经存在”。我确信情况并非如此。我不知道该怎么做。

请帮助我。

谢谢!感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

应该是:

/**
 * @ManyToMany(targetEntity="Itemimage")
 * @JoinTable(name="itemimage_map",
 *      joinColumns={@JoinColumn(name="item_id", referencedColumnName="id")},
 *      inverseJoinColumns={@JoinColumn(name="image_id", referencedColumnName="id")}
 *      )
 */

导致创建第三个表(itemimage_map),该表仅包含其他两个表的映射。它不是您必须加入的现有表格。该表将包含item_id和image_id,它们是您要映射的表的主键。