Page 1 sur 1

[Symfony] Clef étrangère

Posté : 03 juin 2011, 19:42
par Thegritch
Bonjour,

Je débute dans la création d'un petit site basé sous symfony et je me retrouve avec un souci de clé étrangère dans mon modèle de données :

J'ai donc 2 tables : utilisateur et compte.
La relation est la suivante : 1 et plusieurs
Bref :
1/ Un utilisateur possède plusieurs comptes
2/ Un compte appartient à un seul utilisateur

Voilà ce que donne la modélisation dans moins fichier : schema.yml (doctrine est utilisé)

Code : Tout sélectionner

Compte: connection: doctrine tableName: compte columns: id: type: integer(4) fixed: false unsigned: false primary: true autoincrement: true numeros: type: string(10) fixed: false unsigned: false primary: false notnull: true autoincrement: false libelle: type: string(20) fixed: false unsigned: false primary: false notnull: true autoincrement: false utilisateur_id: type: integer(4) fixed: false unsigned: false primary: false notnull: true autoincrement: false relations: Utilisateur: local: utilisateur_id foreign: id type: one Utilisateur: connection: doctrine tableName: utilisateur columns: id: type: integer(4) fixed: false unsigned: false primary: true autoincrement: true nom: type: string(20) fixed: false unsigned: false primary: false notnull: true autoincrement: false prenom: type: string(20) fixed: false unsigned: false primary: false notnull: true autoincrement: false login: type: string(30) fixed: false unsigned: false primary: false notnull: true autoincrement: false mdp: type: string(30) fixed: false unsigned: false primary: false notnull: true autoincrement: false dateajout: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false created_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false relations: Compte: local: id foreign: utilisateur_id type: many
Voici mon code symfony :

Pour le moment je ne joue qu'avec le Get() et le Set() généré à la volée par symfony :
        //Création d'un compte 
	$monCompte = new Compte();
	$monCompte->setNumeros('12345A');
	$monCompte->setLibelle('Compte courant');
	$monCompte->save();	
	
	// Creation d'un utilisateur
	$monUtilisateur = new Utilisateur();
	$monUtilisateur->setNom('Toto');
	$monUtilisateur->setPrenom("titi");
	$monUtilisateur->setLogin("Login01");
	$monUtilisateur->setMdp("pass01");
	$monUtilisateur->setCompte($monCompte);
	$monUtilisateur->save();
	echo $monUtilisateur;
L'erreur retournée est la suivante :
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`photos`.`compte`, CONSTRAINT `compte_ibfk_1` FOREIGN KEY (`utilisateur_id`) REFERENCES `utilisateur` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
J'ai permuter les clés étrangères sans succès, j'ai vérifier que le bon moteur de la base de données était employé (innoDB) mais j'ai toujours l'erreur.
J'ai cherché sur google sans plus de résultats.
Si vous avez des pistes ou des tutos etc. je suis preneur !!

Par avance merci

Thegritch

Re: [Symfony] Clef étrangère

Posté : 03 juin 2011, 21:20
par zeus
Plutôt que de tester ton schéma depuis le code PHP, si tu regardais dans phpMyAdmin si les champs et les relations sont correctement contruites ? ;)

Mais sinon, si tu lis le message d'erreur, tu verras qu'elle te dit que lors de la création d'un enregistrement dans la table "photo", il manque un "id_utilisateur" valide.
Donc, à priori, rien à voir avec la relation dont tu nous parles.
De plus, pour une relation 1:n, pas la peine de la mettre de chaque côté, sauf si tu veux redéfinir l'alias.