Yii2批量插入数据

批量插入数据在优化数据库连接时很有作用,特别是在数据量很大情况下,可以减少数据库连接,所以此方法大家都应该掌握。

批量插入我们使用 batchInsert ,至于具体用法大家可以看文档,不看文档也没关系,相信大家直接看例子也能明白。

批量插入的例子

//要插入的表的名称
$tableName = Post::tableName();

//要插入的字段
$field = [‘id’,’name’];

//要插入的数据(注:是一个二维数组)
$insertData[] = [1,”PHP学习网”];
$insertData[] = [2,”PHP学习网”];
$insertData[] = [3,”PHP学习网”];
$insertData[] = [4,”PHP学习网”];
$insertData[] = [5,”PHP学习网”];
$insertData[] = [6,”PHP学习网”];

//执行,返回值为插入成功的数目
$totalnum = Yii::$app->db->createCommand()->batchInsert($tableName,$field,$insertData)->execute();

以上是没有经过数据合法效验的,若是需要效验请使用

$rows = [];
foreach ($insertData as $model) {
if (!$model->validate()) {
// 处理无效数据
break;
}
$rows[] = $model->attributes;
}
$totalnum = Yii::$app->db->createCommand()->batchInsert($tableName,$field,$rows)->execute();

若是效验确实不需要,也可以使用,下面的方法简化效验
use yii\helpers\ArrayHelper;
$rows = ArrayHelper::getColumn($insertData, ‘attributes’);

接下来执行
$post = new Post();
Yii::$app->db->createCommand()->batchInsert(Post::tableName(), $post->attributes(), $rows)->execute();

至于是哪种还需要开发过程中灵活使用,选择合适自己的。

作者:PHP学习网,本文 Yii2批量插入数据 版权归作者,免费文章欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
编辑精选
Yii2实现ActiveForm ajax提交 2851 浏览 2017-03-27
yii执行原理 1341 浏览 2015-06-30
Yii中CDCriteria常用方法总结 1189 浏览 2015-04-15
在yii中使用memcache 1105 浏览 2016-07-22

发表评论