Yii2如何批量添加数据


Posted in PHP onMay 17, 2016

批量添加这个操作,在实际开发中经常用得到,今天小编抽空给大家整理些有关yii2批量添加的问题,感兴趣的朋友一起看看吧。

在上篇文章给大家介绍了关于浅析Yii2 gridview实现批量删除教程,当然,着重点在于怎么去操作gridview了,今儿我们来好好谈谈yii2如何批量添加数据?

有同学嚷嚷了,这还不简单,我foreach一循环,每个循环里面直接把数据插入到数据库,简单粗暴完事!我擦嘞,哥,你要是跟我在一个公司,我觉得第二天见到你的概率可就不大了!

话不多说,说多了你在骂我,我们步入正题,先看一个简单到小学生都认识的表结构

//test 
id 
name

我们现在就是要在yii2中对这张数据表批量插入10条数据

我们想要的方式肯定是下面这样的,一条sql多么干脆直接了事

insert into test (name) values ('zhangsan'), ('lisi');

分析都分析完了,好吧,赶紧看看具体实现

//假如 $names = ['zhangsan', 'lisi']; 
$data = []; 
foreach ($names $k => $v) { 
$data[] = [$v]; 
} 
Yii::$app->db->createCommand()->batchInsert('test', ['name'], $data)->execute();

我相信很多人都是冲着AR能不能实现批量插入来的,理由无非就是更安全更方便操作呗。但是官方手册貌似没有,没有,没有。。。心都碎了,竟然没有,至少我没有找到,你找到了请点击原文找到我并联系我,我也si分的需要方法啊。

不过不巧的是,我找到一个跟AR相关联的操作方法,我们共同分享参考一下看看具体怎么回事

假设有一个Post类的数组 $models,你就可以这样操作

use yii\helpers\ArrayHelper; 
$rows = []; 
foreach ($models as $model) {
if ($model->validate()) { 
$rows[] = $model->attributes;
} 
} 
$rows = ArrayHelper::getColumn($models, 'attributes'); 
$postModel = new Post; 
Yii::$app->db->createCommand()->batchInsert(Post::tableName(), $postModel->attributes(), $rows)->execute(); 
//当然啦,上面给出的是插入所有的字段,但事实往往事与愿违,也简单,稍作调整即可 
$rows[] = [ 
'title' => $model->title, 
'content' => $model->content, 
]; 
Yii::$app->db->createCommand()->batchInsert(Post::tableName(), ['title', 'content'], $rows)->execute();

虽然又回到了batchInsert上,不过没关系,该验证的都验证了,安全是无须担心的。

以上所述是小编给大家介绍的Yii2如何批量添加数据的相关知识,希望对大家有所帮助!

PHP 相关文章推荐
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
Nov 17 PHP
PHP5中使用DOM控制XML实现代码
May 07 PHP
php date()日期时间函数详解
May 16 PHP
PHP编码规范的深入探讨
Jun 06 PHP
PHP 获取远程文件大小的3种解决方法
Jul 11 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
php+flash+jQuery多图片上传源码分享
Jul 27 PHP
php事件驱动化设计详解
Nov 10 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 PHP
Laravel使用模型实现like模糊查询的例子
Oct 24 PHP
PHP基于array_unique实现二维数组去重
Jul 14 PHP
PHP并发多进程处理利器Gearman使用介绍
May 16 #PHP
php截取视频指定帧为图片
May 16 #PHP
PHP中常用的数组操作方法笔记整理
May 16 #PHP
PHP获取用户访问IP地址的5种方法
May 16 #PHP
php pdo oracle中文乱码的快速解决方法
May 16 #PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 #PHP
Yii2 assets清除缓存的方法
May 16 #PHP
You might like
ThinkPHP快速入门实例教程之数据分页
2014/07/01 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
jquery中EasyUI实现异步树
2015/03/01 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
个人求职信范文分享
2014/01/31 职场文书
情侣吵架检讨书
2014/02/05 职场文书
学校师德师风整改措施
2014/10/27 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
欢迎词怎么写
2015/01/23 职场文书
学校食堂管理制度
2015/08/04 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
Mysql 如何实现多张无关联表查询数据并分页
2021/06/05 MySQL
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript
如何基于python实现单目三维重建详解
2022/06/25 Python