最新公告:最新上线Yii2实战教程,欢迎大家订阅

Yii2批量插入数据

0 2138

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

批量插入我们使用 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实战教程

一套真正的从入门到实践的教程,不说废话的讲解,实例操作,作者的亲自指导,有问题随时提问。现在购买即可获取全套完整教程

PHP学习网 – 公众账号

最新文章
为gitlab配置QQ个人邮箱 356
Mac下PHP7.2.4安装redis扩展和memcache扩展 431
微信公众号订阅号和服务号实现通信步骤 168
免费证书Let’s Encrypt的申请和使用 336
mac下Homebrew的使用 485
mysql5.7.21导入5.6的数据报Error : Invalid default value for ‘comment_date’ 632
阿里云 lnmp一键安装包远程访问Mysql 1046
php memcached扩展安装 849
vagrant package 打包命令的用法 870
Warning: require_once(): open_basedir restriction in effect 错误 1213
随机文章
js判断输入的密码值的有效性 1433
Yii –Command 任务处理 944
PHP面向对象:instanceof 运算符 1060
Yii2实现ActiveForm ajax提交 2638
chkconfig的使用方法 1375
svn switch服务器下svn地址更改 1018
yii 标签用法 781
yii2将js代码注册到页面的底部 1316
Yii::记录日志到自定义文件 838
php class_exists检查类是否已定义 1058
切换注册

登录

切换登录

注册