Permettez-moi d'abord expliquer la structure de la table:Codeigniter contrainte de clé étrangère vérifier
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| firstname | varchar(255) | NO | | NULL | |
| name | varchar(255) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
Le champ id est référencé à partir d'une autre table par une clé étrangère.
Dire que j'ai une fonction dans mon modèle comme celui-ci:
public function delete_user($id) {
return $this->db->delete('users', array('id' => $id));
}
Lorsque cet utilisateur est référencé à partir de l'autre table, il faut jeter une erreur. La « mauvaise » chose est que Codeigniter montre en fait cette erreur sur une pleine page:
Error Number: 1451
Cannot delete or update a parent row: a foreign key constraint fails (`testing`.`users_link`, CONSTRAINT `users_link_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`))
DELETE FROM `users` WHERE `id` = '1'
Y at-il un moyen de rendre la fonction delete_user retourne FALSE au lieu de montrer l'erreur? J'aimerais informer l'utilisateur qu'il doit d'abord faire quelque chose d'autre. J'ai essayé d'utiliser des transactions et de retourner le transaction_status, mais cela renvoie l'erreur.
bien vous devez modifier la fonction de suppression – Satya
J'ai trouvé la réponse moi-même: $ db ['default'] ['db_debug'] = FALSE; Rappelez-vous que dans Codeigniter 3.0 (CI3), ceci est maintenant '$ errors = $ this-> db-> error();' – EsTeGe