1 votes

Résolution du problème "La colonne clé n'existe pas dans la table" lors de la construction à partir de schema.yml

J'ai le fichier schema.yml suivant :

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

Mais, lorsque j'exécute le build-all-reload le message d'erreur suivant s'affiche :

SQLSTATE [42000] : Erreur de syntaxe ou violation d'accès : 1072 La colonne clé 'subpage' n'existe pas dans la table

J'essaie d'implémenter une classe d'auto-relation.

2voto

Arthur Frankel Points 2184

Je pense que vous voulez avoir ce que vous avez listé :

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

mais vous avez besoin d'une colonne id (étrangère : id) pour la clé primaire de la table Page et d'une colonne appelée 'subpage' qui contient la référence (locale : subpage) à l'enfant. Ainsi, vous pouvez avoir une page avec un id = "100" contenant un champ appelé subpage qui contient un id = "200" et ce "200" est la clé réelle (id) d'une page différente.

MISE À JOUR : À partir du commentaire pour modifier le fichier de schéma original :

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

Veuillez noter que je fais de sérieuses suppositions sur votre schéma, notamment :

  • que vous voulez que id soit votre clé primaire et que vous vous occuperez de sa définition (vous pouvez vouloir autoincrement : true dans le schéma).
  • la sous-page est facultative en tant que relation enfant
  • section_id n'est pas votre clé primaire

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X