まず、テーブル構造について説明します。
+-----------+--------------+------+-----+---------+----------------+
| 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 を返そうとしましたが、それでもエラーがスローされます。