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 :

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
Voici mes tables :

table Personne
Nom : table-personne.PNG
Affichages : 2016
Taille : 18,3 Ko
table Employer
Nom : Employer.PNG
Affichages : 2049
Taille : 20,5 Ko

voici mes comment j'ai exécuté mes requêtes :

add() Personne :

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() ]);
    }
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 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() ]);
    }