par
Thegritch » 03 juin 2011, 19:42
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