Ho appena perso mezzo pomeriggio per un bug di Doctrine:
Se si definisce un’entità come estensione di un’altra e questa entità ha fra le sue proprietà un mapping ManyToOne (ma credo anche ManyToMany o OneToMany) Doctrine genera un sql bacato solo nel caso si usi DQL
La cosa noiosa è che l’sql generato è corretto se si usa un find(), quindi il listing completo veniva correttamente eseguito, mentre lo show del singolo item no.
Il codice era del tipo:
/** * Category * @author Marco Albarelli* * @ORM\Table() */ class Category extends Tag{ /** * @var Category $parent * @ORM\ManyToOne(targetEntity="Category") */ private $parent;
L’eccezione era così:
An exception has been thrown during the rendering of a template ("SQLSTATE[42P01]: Undefined table: 7 ERROR: missing FROM-clause entry for table "t0" LINE 1: ...t1.parent_id AS parent_id7 FROM Category t1 WHERE t0.id = $1 ^")
Alla fine per risolvere ho tolto l’extend e ho copia/incollato i campi e getters/setters della classe parent nella classe figlia
Il bug è già stato segnalato qui
La gestione dell’ereditarietà pare che sia un pelo problematica
hello there, wonderful page, and a very good understand! 1 for my bookmarks.