Устранение неполадок «Ключевой столбец не существует в таблице» при построении из файла Schema.yml

StackOverflow https://stackoverflow.com/questions/1828210

  •  11-09-2019
  •  | 
  •  

Вопрос

У меня есть следующий файл 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 Ключевой столбец «подстраница» не существует в таблице.

Я пытаюсь реализовать класс самоотношения.

Это было полезно?

Решение

Я думаю, вы хотите иметь то, что вы перечислили:

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

но вам нужен столбец идентификатора (иностранный:id) для первичного ключа таблицы страниц и столбца с именем «подстраница», который содержит ссылку (локальный:подстраницу) ребенку.Таким образом, у вас может быть страница с 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 был вашим первичным ключом, и вы позаботитесь о его установке (вам может потребоваться автоинкремент:правда в схеме).
  • подстраница не является обязательной как дочернее отношение
  • section_id не является вашим первичным ключом
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top