Tag
表与Category
表的关系为多对一(许多标记与一个类别相关,或者一个类别具有多个标记)。
我应该得到从表Tag
到表Category
的正常的多对一关系。它应该基于表Category
(名为id_category
)的ID。然而,我却得到了.表VARCHAR(255)
列中的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 2的命令update --dump-sql
获得的结果如下:
ALTER TABLE Tag ADD category VARCHAR(255) DEFAULT NULL
原则给了我VARCHAR
,而不是用外键作为id的INTEGER
。有人知道为什么吗?
在这种情况下,如何告诉Symfony建立关系?
发布于 2012-09-04 07:57:15
不要使用@ORM\列,只需使用@ORM\ManyToOne:
/**
* @ORM\ManyToOne(targetEntity="Category")
* @ORM\JoinColumn(name="id_category", referencedColumnName="id_category", nullable=true)
*/
protected $category;
https://stackoverflow.com/questions/12267098
复制相似问题