Ho un database molto semplice che sto cercando di importare e creare entità da. Doctrine (Symfony) è in grado di generare i file di mappatura YML dal database. Ma quando ho subsiquently tenta di generare entità, ottengo il seguente errore:Symfony2/Doctrine2 File di mapping non valido Eccezione durante il tentativo di generare entità
[Doctrine\Common\Persistence\Mapping\MappingException]
Invalid mapping file 'SandboxBundle.Entity.Product.orm.yml' for class
'SandboxBundle\Entity\Product'.
Il file yml guarda bene a me, come ci si aspetterebbe di essere che è stato generato da Doctrine. Solo per essere sicuro, l'ho verificato con un validatore yml online che diceva che era OK. Il comando che ho utilizzato per tentare di generare le entità era:
app/console generate:doctrine:entities sandbox
I file .yml seguono. Si prega di scusare eventuali errori di spaziatura yml che sono il risultato di incollare il file qui. Come ho detto, i file yml sono stati generati da doctrine e hanno superato una verifica online.
Product:
type: entity
table: product
indexes:
category_id:
columns:
- category_id
id:
id:
type: integer
nullable: false
unsigned: false
comment: ''
id: true
generator:
strategy: IDENTITY
fields:
productname:
type: string
nullable: true
length: 10
fixed: false
comment: ''
categoryId:
type: integer
nullable: true
unsigned: false
comment: ''
column: category_id
lifecycleCallbacks: { }
E per completezza, ecco il file yml di categoria. L'errore era sul prodotto, ma presumo che sia dovuto al fatto che il prodotto è stato elaborato per primo.
Category:
type: entity
table: category
id:
id:
type: integer
nullable: false
unsigned: false
comment: ''
id: true
generator:
strategy: IDENTITY
fields:
categoryname:
type: string
nullable: true
length: 50
fixed: false
comment: ''
lifecycleCallbacks: { }
Ho cercato sul Web qualsiasi risorsa relativa alla diagnostica di Eccezioni di mapping, ma non ne ho trovato nessuna. Presumo che ci sia qualcosa nei file YML che sta causando il soffocamento del generatore di entità. Ma il messaggio di errore non fornisce indicazioni su cosa potrebbe essere. Vedo che ci sono molte istanze di questo tipo di domande su Stack Overflow. Sarebbe bello avere informazioni su COME per diagnosticare questi tipi di errori, e quindi essere in grado di capirlo da soli.
Don, non è una soluzione, ma si fa avere un'opzione per eseguire il comando 'generate entità' con l'opzione 'verbose', che ti fornirà un dump di stack PHP, e quindi potrai iniziare a scavare nel codice Doctrine, per vedere almeno cosa sta fallendo. tuttavia, suggerisci che se hai intenzione di iniziare a frugare nel codice del fornitore, aggiungendo le istruzioni diagnostiche 'print_', e simili, che lo fai in un'istanza di prova di Symfony che crei appositamente per questo scopo. Questo è quello che ho fatto –