現在、モデルで ORM に RedBean を使用しています。
列の 1 つが一意に設定されている MySQL テーブルにデータを挿入する必要があります。
現在、データは次のようなフォームを介して挿入されます。
//Create
$object = R::dispense('object');
//Need to check if supplied name is a duplicate
$object->name = $name
$object->description = $description
//Save
R::store($object)
ここでの問題は、$name がデータベースで複製されていなければ、すべてうまくいくということです。重複している場合は、例外をキャッチして SQL エラー コード 23000 を取得できます。
例外をエコーすると、次のようになります。
[23000] - SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'abc' for key 'name_UNIQUE'
もう 1 つの問題は、UNIQUE に設定された複数のフィールドがある場合、重複した最初のフィールドだけが例外で通知されることです。したがって、次のフィールドを取得するには、ユーザーが最初の重複を修正してクエリを再実行する必要があります。
これはかなり効率が悪いようです。あまりにも多くの SQL ステートメントを実行せずに、ユーザーが複数のフィールドに重複データを挿入したかどうかを確認できる必要があります。
これを行うためのベストプラクティスは何ですか? また、アクションが成功したかどうか、または失敗した場合はその理由とどのフィールドをコントローラーに返すかについてのベスト プラクティスは何ですか?
ありがとうございました :)