Symfony2 项目中的 Doctrine2 映射问题

Posted

技术标签:

【中文标题】Symfony2 项目中的 Doctrine2 映射问题【英文标题】:Doctrine2 Mapping Problems on a Symfony2 Project 【发布时间】:2012-01-02 12:28:35 【问题描述】:

我有 2 个实体 Item 和 Itemimage。 Item 与 Itemimage 之间的关系是 OneToMany 单向与 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 Entity 中的一个属性 item_id:是Item实体的主键属性

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

请帮帮我。

谢谢!感谢您的帮助。

【问题讨论】:

【参考方案1】:

应该是:

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

【讨论】:

以上是关于Symfony2 项目中的 Doctrine2 映射问题的主要内容,如果未能解决你的问题,请参考以下文章

由 Doctrine2 (Symfony2) 生成的约束中的奇怪随机名称

如何从 Symfony2 和 Doctrine2 中的一个点保存和检索纬度和经度

带有 Symfony2 的 Doctrine2 无法识别数据库字符集和排序规则

Symfony2 Doctrine2 获取所有表

Symfony2 / Doctrine2:不要在模式上删除全文索引:更新

如何在 Doctrine2 (Symfony2) 中按案例排序