0

フィールドのセットが一緒になって複合一意キーを形成するようにするためだけに、テーブルにインデックスを追加しました (このアプローチは正しいですか? または、Doctrine でより良いオプションがありますか?)

それを行った後、オブジェクトを保存しようとして一意制約が失敗すると、SQL 例外が生成されます。これを処理する最善の方法は何ですか? カスタムエラーメッセージを表示するには?

私の宿題

  1. MySQL からの例外コードを確認して処理します。しかし、そのような制約が複数ある場合、正確な制約を特定することはできません。

  2. スキーマに postValidator を追加し、そこにロジックを記述します

3番目の/より良い方法はありますか?

ありがとう

4

2 に答える 2

1
try {

    $model->save();

// maybe be more precise to catch only that special exception you described
} catch (Doctrine_Exception $e) { 

   $e->setMessage('my error message');
   throw $e;
}

あるいは、doctrine の組み込みの検証を使用することもできます...

于 2010-08-06T14:25:00.430 に答える
0

以前に提案され、Zolex によって確認されたように、最善の方法はポストバリデーターを作成することです!

于 2011-02-18T10:06:41.277 に答える