2011-12-12 21 views
0

私はここで数多くの記事を見てきましたが、これを知りましたが、私が発掘したもののどれも私の正確な問題に特有のものは何も言及していません。だから、この質問の見かけ上の冗長性を許してください。CodeIgniterデータベースのエラーオーバーライド

テーブルにレコードを挿入しようとしたときに、そのインサートが特定のフィールドに固有値索引付けに違反すると、CIがエラーに関する独自のエラーメッセージをスローするモデルがあります。

CodeIgniterの表示されたエラーを自分のハンドラでデータベースのエラーで上書きする方法があるかどうか疑問に思っています。そのため、エラーで完全に台無しにされているのではなく、提出されたものは既にデータベースにあるものの複製です。

ここでは、DBに対してselectを実行してそのように処理することでこれを行うことができますが、ユニークなインデックスでそのようなことを処理できるデータベース自身の能力には全く直感的ではないようです。

だから、誰かがCIのデータベースエラー処理にフックし、それを独自の実装で上書きする方法を見つけましたか?

答えて

1

クエリを送信する前に既存の値を確認します。これは直感的ではありません。 NEVERは、ユーザ/入力を検証するためにデータベースに依存しています。PHPを使用してください。

+0

これが私の唯一のオプションであるとすれば、それはそうだと思います。ありがとう、マイク。 – Skittles

+0

あなたが求めていることは可能ですが、それは非常に悪い習慣です。テーブルとインデックスを適切に最適化していることを確認してください。パフォーマンスの低下が目立たないようにしてください。 – Mike

-1

CIエラー処理の仕組みがわかりませんが、エラーを表示するメソッドをオーバーライドしてみてください。私はそれがシステム/コア/ exceptions.phpにあると確信しています。

+0

こんにちはJanL&ありがとうございます。私はそれを見てみましょう。現在、私はシステム/データベース/ DB_driver.phpファイルのソースを調べていましたが、このファイルはクエリ機能が備わっているようです。私はそれがどのようにエラーを傍受しているのかを見たいと思っていました。おそらく、私は次にコア処理に代わるヘルパーを書くことができます。より直感的な操作方法ではなく、エラーメッセージでユーザーを放棄させることはできません。 – Skittles

0

このファイルは、エラーメッセージを表示

/application/errors/error_db.phpファイルがあります。ここで何かしたいことがあります。

+0

それも見ています。ありがとうございました。 – Skittles