从schema.yml构建时,对“表中不存在键列”进行故障排除

时间:2009-12-01 19:09:53

标签: schema doctrine

我有以下schema.yml文件:

Page:
  actAs:
    I18n:
      fields: [name,html,urlShortDesc]
  columns:
    name: string
    gender: 
      type: enum
      values: [html, photoGallery]
      default: html
    html: string
    urlShortDesc: string
    section_id: 
      type: integer
      notnull: true
  relations:
    Section: 
      foreignAlias: Pages
    SubPage:
      class: Page
      local: subpage
      foreign: id
      type: one

但是,当我执行build-all-reload命令时,会显示以下错误消息:

  

SQLSTATE [42000]:语法错误或访问冲突:1072表中不存在键列“子页”

我正在尝试实现一个自我关系类。

1 个答案:

答案 0 :(得分:2)

我想你想拥有你列出的内容:

SubPage:
  class: Page
  local: subpage
  foreign: id
  type: one

但是你需要一个id列(foreign:id)作为Page表的主键和一个名为'subpage'的列,它包含对子节点的引用(local:subpage)。因此,您可能包含id =“100”的页面,其中包含名为subpage的字段,其中包含id =“200”,而“200”是不同页面的实际键(id)。

更新:从评论到修​​改原始模式文件:

Page:
  actAs:
    I18n:
      fields: [name,html,urlShortDesc]
  columns:
    name: string
    gender: 
      type: enum
      values: [html, photoGallery]
      default: html
    html: string
    urlShortDesc: string
    section_id: 
      type: integer
      notnull: true
    id: 
      type: integer
      notnull: true
    subpage: 
      type: integer
      notnull: false
  relations:
    Section: 
      foreignAlias: Pages
    SubPage:
      class: Page
      local: subpage
      foreign: id
      type: one

请注意,我对您的架构做了一些严肃的假设,包括:

  • 您希望将id作为主键,并且您将负责设置(您可能需要自动增量:架构中为true)。
  • 子页面作为子关系可选
  • section_id不是您的主键