首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在关系规则中生成的唯一键

在关系规则中生成的唯一键
EN

Stack Overflow用户
提问于 2012-03-07 23:53:14
回答 2查看 554关注 0票数 0

我正在尝试在Doctrine中的answers和questions表之间创建OneToMany关系。这些是基本的YAML模式

答案模式

代码语言:javascript
复制
  type: entity
  table: fs_answer
  fields:
    id:
      id: true
      type: integer
      unsigned: false
      nullable: false
      generator:
        strategy: IDENTITY
    questionId:
      type: integer
      unsigned: false
      nullable: false
      column: question_id
    body:
      type: text
      nullable: false
  oneToOne:
    question:
      targetEntity: FsQuestion
      cascade: {  }
      mappedBy: null
      inversedBy: null
      joinColumns:
    question_id:
      referencedColumnName: id
      orphanRemoval: false
  lifecycleCallbacks: {  }

问题模式:

代码语言:javascript
复制
  type: entity
  table: fs_question
  fields:
    id:
      id: true
      type: integer
      unsigned: false
      nullable: false
      generator:
        strategy: IDENTITY
    body:
      type: text
      nullable: false
  oneToMany:
    answer:
      targetEntity: FsAnswer
      cascade: {  }
      mappedBy: question
      inversedBy: answers
      joinColumns:
    question_id:
      referencedColumnName: id
      orphanRemoval: false
  lifecycleCallbacks: {  }

当我用doctrine:schema:update更新模式时,它生成了下面的SQL代码,并将unique key放入answers表中的'question_id‘。

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `fs_answer` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `question_id` int(11) NOT NULL,
  `body` longtext NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_552D082B1E27F6BF` (`question_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

如何避免这种独一无二的关键问题?从逻辑上讲(一对多),在answers表中问题id不应该有唯一的键。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-08 20:06:25

实际上,它和下面的代码一样简单

问题:

代码语言:javascript
复制
oneToMany:
  answer:
    targetEntity: FsAnswer
    mappedBy: question
    cascade: ["persist"]

答案:

代码语言:javascript
复制
manyToOne:
  question:
    targetEntity: FsQuestion
    inversedBy: answer
票数 1
EN

Stack Overflow用户

发布于 2012-03-08 00:08:28

每个答案都有且只有一个问题,对吗?您将其定义为oneToOne这一事实在某种程度上证实了这一点。

看起来你的joinColumn资料搞得一团糟。令人惊讶的是它没有引发错误。

复习理论手册中的示例:

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/reference/association-mapping.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9604730

复制
相关文章

相似问题

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