如何在Yii2中制作多个UPSERT?

时间:2016-12-16 06:41:56

标签: mysql yii2

我正在使用Yii2高级模板。我必须在MySql数据库中插入1000到2000条记录。

是否可以在 Yii2 中进行多次 UPSERT查询

请帮助我提出您的建议/答案。谢谢。

2 个答案:

答案 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