多对一 - Symfony不能生成正确的基于ID的关系



Tag表与Category表的关系为多对一(多个标签与一个类别相关,或者一个类别有多个标签)。

我应该得到从表Tag到表Category的正常多对一关系。它应该基于表Category(名为id_category)中的ID。然而,相反,我得到了。。。表Tag中的VARCHAR(255)列!

以下是来自Tag实体的部分代码:

/**
 * @ORMColumn(nullable=true)
 * @ORMManyToOne(targetEntity="Category")
 * @ORMJoinColumn(name="id_category", referencedColumnName="id_category")
 */
protected $category;

类别实体并没有适当的相关"标记"列,因为它是单向关系。无论如何,以下是id_categoryCategory实体中的声明方式(尽管我认为这并不重要):

/**
 * @ORMId
 * @ORMColumn(type="integer")
 * @ORMGeneratedValue(strategy="AUTO")
 */
protected $id_category;

Doctrine2的命令update --dump-sql得到的结果如下:

ALTER TABLE Tag ADD category VARCHAR(255) DEFAULT NULL

条令给了我VARCHAR,而不是INTEGER作为带有外键的id。有人知道为什么吗
在这种情况下,如何告诉Symfony建立关系?

不要使用@ORM\Column,只使用@ORM\ManyToOne:

/**
 * @ORMManyToOne(targetEntity="Category")
 * @ORMJoinColumn(name="id_category", referencedColumnName="id_category", nullable=true)
 */
protected $category;

相关内容

  • 没有找到相关文章

最新更新