2016-09-27 12 views
2

私はYii 2で上記のコードを使用してバッチインサートを行うことができることを知っています。しかし、どうすればbatchInsertを使って重複したエントリを防ぐことができますか?私は重複した名前を持っている場合たとえば、私はデシベルでyii2の重複したbatchInsertを防ぐ

答えて

0

つの可能なオプションを挿入したいいけない:

1)をデータベーステーブルにname列に一意の制約を使用してください。

あなただけのクエリとキャッチ例外を実行しようとその方法:

try { 
    // Your query goes here 
} catch (\yii\db\Exception) { 
    // Handle error 
} 

\yii\db\Exceptionは、より一般的なデータベース操作に関連する例外で、あなたはより具体的な\yii\db\IntegrityExceptionを使用することができます。

2)データを入力してクエリを実行する前に、PHPの配列から重複を除外します。アレイが構築される方法に応じて、あなたはそれを行うことができます:はい場合

  • 同じ名前のアイテムがすでに形成され、アレイ内に存在するかどうかをチェックすることにより、例えばforeachでは、この配列を構築する時に、 - 、それに要素を追加しそう - スキップします。
  • またはその後、たとえばarray_filter機能を使用します。

私はPHPで重複を扱うことにしても、データベースのデータ構造と保護がスーパーフローではないため、最初のアプローチをお勧めします。

関連する問題