先解释一下表结构:
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| firstname | varchar(255) | NO | | NULL | |
| name | varchar(255) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
id 字段通过外键从另一个表引用。
假设我的模型中有一个这样的函数:
public function delete_user($id) {
return $this->db->delete('users', array('id' => $id));
}
当从其他表引用该用户时,它应该抛出错误。 “糟糕”的是,Codeigniter 实际上在整个页面上显示了该错误:
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'
有没有办法让delete_user函数返回FALSE而不是显示错误?我想通知用户他们必须先做其他事情。我尝试使用事务并返回 transaction_status,但这仍然会引发错误。
在配置文件夹中的database.php文件中找到该行
$db['default']['db_debug']
并将其设置为 FALSE。这将阻止 Codeigniter 在屏幕上打印错误。
另外,在删除功能中您可以检查:
if ($this->db->_error_number() == 1451)
如果发生这种情况时您需要做一些特别的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)