【问题标题】:Doctrine2 Mapping Problems on a Symfony2 ProjectSymfony2 项目中的 Doctrine2 映射问题
【发布时间】: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’已经存在”。我确信情况并非如此。我不知道该怎么办。

请帮帮我。

谢谢!感谢您的帮助。

【问题讨论】:

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


    【解决方案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,它们是您要映射的表的主键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-18
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      相关资源
      最近更新 更多