gpt4 book ai didi

Codeigniter 外键约束检查

转载 作者:行者123 更新时间:2023-12-04 17:38:34 24 4
gpt4 key购买 nike

先解释一下表结构:

+-----------+--------------+------+-----+---------+----------------+
| 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 而不是显示错误?我想通知用户他们必须先做其他事情。我尝试使用事务并返回事务状态,但这仍然会引发错误。

最佳答案

在配置文件夹 database.php 文件中找到该行

$db['default']['db_debug']

并将其设置为 FALSE。这将防止 Codeigniter 在屏幕上打印错误。

同样在删除功能中,您可以检查:
if ($this->db->_error_number() == 1451)

如果您在发生这种情况时需要做一些特别的事情。

关于Codeigniter 外键约束检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10463429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com