Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
supprime des objets enfants j'obtiens le message suivant :
Fatal error: Uncaught exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`fredon/plantation`, CONSTRAINT `plantation_ibfk_1` FOREIGN KEY (`iduniteHomogeneDeProspection`) REFERENCES `unitehomogenedeprospection` (`iduniteHomogeneDeProspection`))' in /data/http/fredon/Zend/Db/Statement/Pdo.php:238 Stack trace: #0 /data/http/fredon/Zend/Db/Statement.php(303): Zend_Db_Statement_Pdo->_execute(Array) #1 /data/http/fredon/Zend/Db/Adapter/Abstract.php(467): Zend_Db_Statement->execute(Array) #2 /data/http/fredon/Zend/Db/Adapter/Pdo/Abstract.php(235): Zend_Db_Adapter_Abstract->query('DELETE FROM `un...', Array) #3 /data/http/fredon/Zend/Db/Adapter/Abstract.php(632): Zend_Db_Adapter_Pdo_Abstract->query('DELETE FROM `un...') #4 /data/http/fredon/Zend/Db/Table/Abstract.php(1064): Zend_Db_Adapter_Abstract->delete('unitehomogenede...', 'iduniteHomogene...') #5 /data/http/fredon/application/default/controllers/Uni in /data/http/fredon/Zend/Db/Statement/Pdo.php on line 238
Le message précédent m'averti et me dit que je ne peux pas supprimer un objet enfant, ma question est :
Comment afficher un message convenable à l'internaute en lui indiquant qu'il doit supprimer l'objet parent.
Merci.
Dernière modification par yoga20 (28-04-2010 18:04:25)
Hors ligne
Heu normalement c'est plutôt dans l'ordre inverse non? Tu supprime le parent et ça merde parce qu'il ya des enfants, dans l'autre sens ça doit pas poser de probleme puisque si tu supprime le parent tu supprime tous les enfants
Hors ligne
Dit comme ça, il faut être un sacré meurtrier pour tuer les parents et les enfants ! C'est pas un peu trop cruel tout ça
Je crois que t'as requête devrait supprimer tout les entités reliés avant tout. Les contraintes d'une foreign key ne servent qu'à ça !
Hors ligne
@yoga20 : effectivement +1 pour probitaille.
Sinon si tu veux afficher un message correct sur une exception, il faut la "catcher". Regarde try / catch / throw dans la doc PHP. En gros ça devrait ressembler à :
try { $db->delete(...); } catch (Exception $e) { // je fais ce qui va bien pour afficher une erreur convenable }
regarde bien le fonctionnement des exceptions, c'est hyper pratique pour gérer proprement des erreurs.
A+, Philippe
Hors ligne
Merci pour vos réponses, je suis d'accord avec vous mais le but c'est justement d'empêcher la suppression d'un parent qui a des enfants. C'est pour cela que dans mais règle de clefs étrangère je n'ai pas affecté d'actions => on delete , no action et on update , no action. J'ai donc un message d'erreur, je vais essayer avec try, catch pour traiter l'erreur et l'afficher à l'internaute.
Hors ligne