2012-01-02 109 views
0

我有2个实体Item和Itemimage。 Item与ItemImage之间的关系是OneToMany与JoinColumn的单向关系。我从教条文件中获得帮助。该一对多的单向与JoinColumn与多对多注释来实现的:Symfony2项目的Doctrine2映射问题

/** 
* @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'已经存在”。我相信事实并非如此。我不知道该怎么做。

请帮我这个。

谢谢!我感谢您的帮助。

回答

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,它们是要映射的表的主键。