Risoluzione dei problemi “colonna chiave non esiste nella tabella” quando si costruisce da schema.yml
Domanda
Ho il seguente file 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
Ma, quando eseguo il comando build-all-reload
, viene visualizzato il seguente messaggio di errore:
SQLSTATE [42000]: Errore di sintassi o violazione di accesso: 1072 colonna Chiave 'sottopagina' non esiste nella tabella
Sto cercando di implementare una classe di auto-relazione.
Soluzione
Credo che si desidera avere quello che hai elencato:
SubPage:
class: Page
local: subpage
foreign: id
type: one
ma è necessario una colonna id (stranieri: id) per la chiave primaria della tabella di pagina e una colonna chiamata 'sottopagina', che contiene il riferimento (locale: sottopagina) per il bambino. Così si può avere pagina con id = "100" che contiene un campo chiamato sottopagina che contiene un id = "200" e che "200" è la chiave effettiva (id) di una pagina diversa.
UPDATE: Dal commento di modificare file di schema originale:
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
Si prega di notare che io sto facendo alcuni gravi ipotesi sullo schema tra cui:
- desideri id come chiave primaria e che si prenderà cura di se è stato impostato (si consiglia autoincrement: true nello schema).
- sottopagina è facoltativo come una relazione figlio
- SECTION_ID non è la vostra chiave primaria