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_category
在Category
实体中的声明方式(尽管我认为这并不重要):
/**
* @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;