Bonjour à tous ! j'espère que vous allez bien ?
Alors mon problème se présente de la manière suivante : petite précision,je travaille sur windows
J'ai deux classes mère(Personne) et fille(Employer), du coup j'ai deux tables dans ma base mais la classe fille a des attributs en plus et la clé de la table Personne migre vers la table personne.
En utilisant le mode de connexion PDO, j'essai de faire une insertion dans les deux tables, celle-ci se passe bien dans la table Personne mais pour la table Employer il y'a une erreur qui se produit qui la suivante :
Voici mes tables :Warning: PDOStatement::execute(): SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`rdv_medical`.`employer`, CONSTRAINT `employer_ibfk_1` FOREIGN KEY (`id_perso`) REFERENCES `personne` (`id_perso`)) in C:\xampp\htdocs\mesprojets\appRDVmedical\Model\EmployerManager.php on line 20
table Personne
table Employer
voici mes comment j'ai exécuté mes requêtes :
add() Personne :
add() Employer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class PersonneManager { private $db; // Instance de PDO public function __construct($db) { $this->db = $db; } public function add(Personne $perso) { $q = $this->db->prepare('INSERT INTO personne(nom, prenom, genre) VALUES(:nom, :prenom, :genre)' ); $q->bindValue(':nom', $perso->nom()); $q->bindValue(':prenom', $perso->prenom()); $q->bindValue(':genre', $perso->genre()); $q->execute(); $perso->hydrate([ 'id_perso' => $this->db->lastInsertId() ]); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class EmployerManager { private $db; // Instance de PDO public function __construct($db) { $this->db = $db; } public function add(Employer $emp) { $q = $this->db->prepare('INSERT INTO employer(email, pass, types) VALUES(:email, :pass, :types)'); $q->bindValue(':email', $emp->email()); $q->bindValue(':pass', $emp->pass()); $q->bindValue(':types', $emp->types()); $q->execute(); $emp->hydrate([ 'id_emp' => $this->db->lastInsertId() ]); }
Partager