【问题标题】:prevent duplicate batchInsert in yii2防止在yii2中重复batchInsert
【发布时间】:2016-09-27 04:01:59
【问题描述】:
$connection->createCommand()->batchInsert('user', ['name', 'age'], [
    [$names, $ages],
])->execute();

我知道我可以在 Yii 2 中使用上面的代码进行批量插入。但是如何使用 batchInsert 防止重复输入?例如,如果我有一个重复的名称,我不想将它插入到数据库中

【问题讨论】:

    标签: php mysql yii2 batch-insert


    【解决方案1】:

    两种可能的选择:

    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 中处理重复项,根据数据结构和数据库中的额外保护也不会是多余的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 2011-04-23
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多