我正在使用Yii2高级模板。我必须在MySql数据库中插入1000到2000条记录。
是否可以在 Yii2 中进行多次 UPSERT查询。
请帮助我提出您的建议/答案。谢谢。
答案 0 :(得分:2)
尝试使用修改后的batchInsert()方法:
$db = \Yii::$app->db;
$sql = $db->queryBuilder->batchInsert($table, $fields, $rows);
$db->createCommand($sql . ' ON DUPLICATE KEY UPDATE')->execute();
答案 1 :(得分:2)
从2.0.14版开始,您可以使用upsert()。
您的代码可能看起来像这样:
$insertValues = [
'timestamp' => gmdate('YmdH'),
'entry_id' => $this->id,
'view_count' => 1,
];
$updateValues = ['view_count' => new \yii\db\Expression('table_name.view_count + 1')];
Yii::$app->db->createCommand()->upsert('table_name', $insertValues, $updateValues)->execute();
您可以在此处找到完整的文档:https://www.yiiframework.com/doc/api/2.0/yii-db-command#upsert()-detail