Tag
表与Category
表的关系为多对一(许多标签与一个类别相关,或者一个类别有多个标签)。
我应该从表Tag
到表Category
获得正常的多对一关系。它应该基于表Category
(名为id_category
)中的ID。但是,相反,我会在表VARCHAR(255)
中找到Tag
列!
以下是Tag实体的代码部分:
/**
* @ORM\Column(nullable=true)
* @ORM\ManyToOne(targetEntity="Category")
* @ORM\JoinColumn(name="id_category", referencedColumnName="id_category")
*/
protected $category;
类别实体没有相应的相关“标记”列,因为它是单向关系。无论如何,这里是id_category
实体中Category
的声明方式(尽管我认为这不重要):
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id_category;
我通过Doctrine2的命令update --dump-sql
获得的结果如下:
ALTER TABLE Tag ADD category VARCHAR(255) DEFAULT NULL
Doctrine给了我VARCHAR
,而不是INTEGER
作为外键的id。有谁知道为什么?
如何告诉 Symfony在这种情况下建立关系?
答案 0 :(得分:0)
不要使用@ORM \ Column,只需@ORM \ ManyToOne:
/**
* @ORM\ManyToOne(targetEntity="Category")
* @ORM\JoinColumn(name="id_category", referencedColumnName="id_category", nullable=true)
*/
protected $category;