防止在yiii中重复batchInsert


$connection->createCommand()->batchInsert('user', ['name', 'age'], [
    [$names, $ages],
])->execute();

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

两种可能的选择:

1)使用唯一约束的name列在您的数据库表

这样你就可以尝试执行查询并捕获异常:

try {
    // Your query goes here
} catch (yiidbException) {
    // Handle error
}

yiidbException是比较常见的数据库操作相关异常,可以使用更具体的yiidbIntegrityException。

2)在PHP输入数据和执行查询之前从数组中排除重复项。根据数组的构造方式,你可以这样做:

  • foreach中构建此数组时,例如,通过检查已形成的数组中是否存在具有相同名称的项,如果是-向其添加元素,否则-跳过。
  • 或之后使用例如array_filter函数

我推荐第一种方法,因为即使您决定在PHP中处理副本,根据数据结构和数据库中的额外保护也不是多余的。

相关内容

  • 没有找到相关文章

最新更新