views:

350

answers:

1

Hi there!

I have the following schema.yml file:

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

But, when I execute the build-all-reload command, the following error message is displayed:

"SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'subpage' doesn't exist in table"

I'm trying to implement a self-relation class. Can anyone give me some help?

Thanks in advance, Best regards!

+1  A: 

I think you want to have what you have listed:

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

but you need an id column (foreign: id) for the primary key of the Page table and a column called 'subpage' which contains the reference (local: subpage) to the child. So you may have Page with id = "100" containing a field called subpage which contains an id = "200" and that "200" is the actual key (id) of a different page.

UPDATE: From comment to modify original schema file:

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

Please note that I am making some serious assumptions on your schema including:

  • you want id as your primary key and that you will take care of it being set (you may want autoincrement: true in the schema).
  • subpage is optional as a child relation
  • section_id is not your primary key
Arthur Frankel
Hi!First of all, thank you for the help. Sorry but can you "insert" your suggestion on my schema, because I haven't much experience using Doctrine and it's confusing me a bit.Thanks,Best regards!
Rui Gonçalves
Updated response above
Arthur Frankel