Bonjour,
Me voici devant un problème qui me tape la tête sérieusement. (BDD toute pourrie j'ai l'impression)
Je dois purger ma BDD. Pour cela j'utilise soit remove():
$connect = $this->getDoctrine()->getEntityManager();
foreach($objEleveHasLivre as $case => $livre)
{
$connect->remove($objEleveHasLivre[$case]);
}
Je suis sur que mon objet soit remplis car je l'utilise entre temps et même juste avant le remove.
J'ai donc éssayé en éssayant le create Query que je met dans le repository:
mon repository:
public function PurgeEleveHasLivre($ideleve)
{
$db=$this->_em->getConnection();
$req="DELETE FROM eleve_has_livre WHERE eleve_ideleve=$ideleve AND statut_idstatut=6";
$prep=$db->prepare($req);
$param=array();
$prep->execute($param);
$query=$this->getEntityManager()->createQuery("SELECT b.idlivre FROM LGBBourseLivresBundle:EleveHasLivre a, LGBBourseLivresBundle:Livre b, LGBBourseLivresBundle:Statut c WHERE a.eleveIdeleve = $ideleve AND (a.statutstatut = 6 OR a.statutstatut = 7) AND b.idlivre = a.livreIdlivre AND b.nonRepris = 1 AND a.statutstatut = c.idstatut");
$ListeLivreEleveNonRepris = $query->getResult();
$NbLivre = count($ListeLivreEleveNonRepris);
for($cpt=0; $cpt<$NbLivre; $cpt++)
{
// Supprimer les livre non repris //
$db = $this->_em->getConnection();
$query = "DELETE FROM eleve_has_livre WHERE eleve_ideleve = $ideleve AND livre_idlivre = ".$ListeLivreEleveNonRepris[0]['idlivre'];
$stmt = $db->prepare($query);
$params = array();
$stmt->execute($params);
}
}
Ma ligne dans le controller:
$connect->getRepository('LGBBourseLivresBundle:EleveHasLivre')->PurgeEleveHasLivre($avoir->getEleveeleve()->getIdeleve());
Voici l'érreur:
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`fcpe`.`detail_avoir`, CONSTRAINT `fk_detail_avoir_eleve_has_livre1` FOREIGN KEY (`eleve_has_livre_eleve_ideleve`, `eleve_has_livre_livre_idlivre`) REFERENCES `eleve_has_livre` (`eleve_ideleve)
En lisant l'érreur on dirait que l'on ne peut ni supprimer ni mettre à jour les lignes d'une clef étrangère. Celà vient de la BDD ou de mon code?
S'il vous plait aider moi
Merci d'avance.