同じデータが現在のデータベースに既に存在するかどうかのみを確認します。
しかし、挿入されるデータにはすでに同じデータがいくつかあります。
したがって、挿入操作中にこの情報が提供されます
'INSERT INTO workflow (workflow_step_id, workflow_status) VALUES (?, ?)' を params ["10", "Assigned"]:
SQLSTATE[23000]: 整合性制約違反: 1062 キー 'stepid_status_uniq' のエントリ '10-Assigned' が重複しています
リーリーデータベースに一意の制約を作成しました(これが正しいかどうかはわかりません)
しかし、現在挿入されているデータはフラッシュする前と同じデータを持っています
現在のデータがデータベースに保存する前に、固有のルールに違反していることを確認するにはどうすればよいですか?
制約ルールに従って挿入する前に一度クエリを実行できます。たとえば、例によれば、最初にクエリを実行します
。 リーリー結果が 0 でない場合は、挿入を続けると独自のルールに違反することを意味します。
もちろん、これは実際には推奨されません。挿入するたびにチェックするのは非常にリソースを消費します。
挿入後、affected_rows を確認し、0 が返された場合は、この時点で制約ルールに違反していないか確認します。の使用を検討してみてはいかがでしょうか リーリー
検証を使用する必要があります。
http://symfony.com/doc/master/reference/constraints/UniqueEntity.html