Je commence à travailler avec Symfony, j'ai trouvé de la documentation sur l'héritage. Mais aussi trouvé this discouraging article, ce qui me fait douter si Doctrine gère l'héritage du tout ...symfony + doctrine + héritage, comment les faire fonctionner?
Quelqu'un trouve-t-il une solution intelligente pour l'héritage dans Symfony + Doctrine?
À titre d'exemple, j'ai déjà structuré la base de données quelque chose comme ceci:
CREATE TABLE `poster` (
`poster_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(50) NOT NULL,
PRIMARY KEY (`poster_id`),
UNIQUE KEY `id` (`poster_id`),
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
CREATE TABLE `user` (
`user_id` int(11) NOT NULL,
`real_name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `user_id` (`user_id`),
CONSTRAINT `user_fk` FOREIGN KEY (`user_id`) REFERENCES `poster` (`poster_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
De là, la doctrine a généré cette "schema.yml":
Poster:
connection: doctrine
tableName: poster
columns:
poster_id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: true
user_name:
type: string(50)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
relations:
Post:
local: poster_id
foreign: poster_id
type: many
User:
local: poster_id
foreign: user_id
type: many
Version:
local: poster_id
foreign: poster_id
type: many
User:
connection: doctrine
tableName: user
columns:
user_id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: false
real_name:
type: string(50)
fixed: false
unsigned: false
primary: false
notnull: false
autoincrement: false
relations:
Poster:
local: user_id
foreign: poster_id
type: one
Création d'un utilisateur pour cette structure avec les formulaires générés automatiquement par Doctrine ne fonctionne pas.
Toute idée sera appréciée.
Je suis confus quant à la façon dont vous souhaitez appliquer l'héritage en fonction des données ci-dessus (votre SQL d'origine ne correspond pas au fichier .yml produit). Pouvez-vous élaborer sur ce que vous essayez de faire? – richsage
Merci d'avoir répondu. Eh bien, il devrait corréler, car il a été généré avec Doctrine. Je l'ai fait recadrer pour me concentrer sur le problème. Je trouve juste bizarre les relations de table d'affiche, parce que ce sont des FK externes d'autres tables à la table d'affiche ... J'essaye juste de prolonger l'affiche avec l'utilisateur, c'est pourquoi j'ai fait user_id un FK de poser_id.S'il vous plaît dites-moi si je dois être plus précis. – ismaelmachado
Mmm je vois maintenant (le truc 'Version' me confondait). Cela pourrait être plus facile si vous commencez par écrire le schéma en .yml en premier - je ne vois pas pourquoi Doctrine générerait ces autres relations à moins que vous ne génériez automatiquement à partir d'une base de données qui a déjà des FK en place. – richsage