Verificação de restrição de chave estrangeira do Codeigniter
Deixe-me primeiro explicar a estrutura da tabela:
<code>+-----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | firstname | varchar(255) | NO | | NULL | | | name | varchar(255) | NO | | NULL | | +-----------+--------------+------+-----+---------+----------------+ </code>
O campo id é referenciado de outra tabela por meio de uma chave estrangeira.
Digamos que eu tenha uma função no meu modelo assim:
<code>public function delete_user($id) { return $this->db->delete('users', array('id' => $id)); } </code>
Quando esse usuário é referenciado na outra tabela, ele deve lançar um erro. A coisa "ruim" é que o Codeigniter realmente mostra esse erro em uma página inteira:
<code>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' </code>
Existe uma maneira de fazer a função delete_user retornar FALSE em vez de mostrar o erro? Gostaria de notificar o usuário de que eles precisam fazer outra coisa primeiro. Eu tentei usar transações e retornar o transaction_status, mas isso ainda gera o erro.