symfony - 一意の制約 保存する前に同じデータが既に存在することを確認するにはどうすればよいですか?
大家讲道理
大家讲道理 2017-05-16 16:44:44
0
2
791
リーリー

同じデータが現在のデータベースに既に存在するかどうかのみを確認します。
しかし、挿入されるデータにはすでに同じデータがいくつかあります。
したがって、挿入操作中にこの情報が提供されます
'INSERT INTO workflow (workflow_step_id, workflow_status) VALUES (?, ?)' を params ["10", "Assigned"]:

で実行中に例外が発生しました

SQLSTATE[23000]: 整合性制約違反: 1062 キー 'stepid_status_uniq' のエントリ '10-Assigned' が重複しています

リーリー

データベースに一意の制約を作成しました(これが正しいかどうかはわかりません)
しかし、現在挿入されているデータはフラッシュする前と同じデータを持っています
現在のデータがデータベースに保存する前に、固有のルールに違反していることを確認するにはどうすればよいですか?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(2)
小葫芦

制約ルールに従って挿入する前に一度クエリを実行できます。たとえば、例によれば、最初にクエリを実行します

。 リーリー

結果が 0 でない場合は、挿入を続けると独自のルールに違反することを意味します。

もちろん、これは実際には推奨されません。挿入するたびにチェックするのは非常にリソースを消費します。
の使用を検討してみてはいかがでしょうか リーリー

挿入後、affected_rows を確認し、0 が返された場合は、この時点で制約ルールに違反していないか確認します。

いいねを押す +0
滿天的星座

検証を使用する必要があります。

http://symfony.com/doc/master/reference/constraints/UniqueEntity.html

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート