検索

ホームページ  >  に質問  >  本文

symfony - 一意の制約 保存する前に同じデータが既に存在することを確認するにはどうすればよいですか?

リーリー

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

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

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

リーリー

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

大家讲道理大家讲道理2789日前802

全員に返信(2)返信します

  • 高洛峰

    高洛峰2017-05-16 16:46:44

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

    。 リーリー

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

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

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

    返事
    0
  • 滿天的星座

    滿天的星座2017-05-16 16:46:44

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

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

    返事
    0
  • キャンセル返事