Codeigniter-Fremdschlüsseleinschränkungsprüfung

Lassen Sie mich zunächst die Tabellenstruktur erläutern:

<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>

Das ID-Feld wird über einen Fremdschlüssel aus einer anderen Tabelle referenziert.

Angenommen, ich habe eine Funktion in meinem Modell wie folgt:

<code>public function delete_user($id) {
    return $this->db->delete('users', array('id' => $id));
}
</code>

Wenn dieser Benutzer aus der anderen Tabelle referenziert wird, sollte er einen Fehler auslösen. Das "schlechte" ist, dass Codeigniter diesen Fehler tatsächlich auf einer ganzen Seite anzeigt:

<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>

Gibt es eine Möglichkeit, die delete_user-Funktion FALSE zurückgeben zu lassen, anstatt den Fehler anzuzeigen? Ich möchte den Benutzer darüber informieren, dass er zuerst etwas anderes tun muss. Ich habe versucht, Transaktionen zu verwenden und den transaction_status zurückzugeben, aber das löst immer noch den Fehler aus.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage