首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >多对一的符号不能生成正确的基于ID的关系。

多对一的符号不能生成正确的基于ID的关系。
EN

Stack Overflow用户
提问于 2012-09-04 15:50:21
回答 1查看 562关注 0票数 0

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

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

下面是标记实体中代码的一部分:

代码语言:javascript
运行
复制
/**
 * @ORM\Column(nullable=true)
 * @ORM\ManyToOne(targetEntity="Category")
 * @ORM\JoinColumn(name="id_category", referencedColumnName="id_category")
 */
protected $category;

类别实体没有适当的相关“标记”列,因为它是单向关系。无论如何,id_category是如何在Category实体中声明的(尽管我认为它并不重要):

代码语言:javascript
运行
复制
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id_category;

我通过Doctrine2 2的命令update --dump-sql获得的结果如下:

代码语言:javascript
运行
复制
ALTER TABLE Tag ADD category VARCHAR(255) DEFAULT NULL

原则给了我VARCHAR,而不是用外键作为id的INTEGER。有人知道为什么吗?

在这种情况下,如何告诉Symfony建立关系?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-04 15:57:15

不要使用@ORM\列,只需使用@ORM\ManyToOne:

代码语言:javascript
运行
复制
/**
 * @ORM\ManyToOne(targetEntity="Category")
 * @ORM\JoinColumn(name="id_category", referencedColumnName="id_category", nullable=true)
 */
protected $category;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12267098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档