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 相关文章推荐
第七节 类的静态成员 [7]
Oct 09 PHP
解决控件遮挡问题:关于有窗口元素和无窗口元素
Jan 28 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
PHP操作数组的一些函数整理介绍
Jul 17 PHP
PHP __autoload()方法真的影响性能吗?
Mar 30 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
php转换颜色为其反色的方法
Apr 27 PHP
php简单socket服务器客户端代码实例
May 18 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 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
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
js 图片轮播(5张图片)
2008/12/30 Javascript
Javascript中的相等与不等运算
2010/04/25 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
vue 优化CDN加速的方法示例
2018/09/19 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
Python实现信用卡系统(支持购物、转账、存取钱)
2016/06/24 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
python语言元素知识点详解
2019/05/15 Python
linux环境下Django的安装配置详解
2019/07/22 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
String这个类型的class为何定义成final?
2012/11/13 面试题
最新大学职业规划书范文
2013/12/30 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
典型事迹材料范文
2014/12/29 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
golang 实现并发求和
2021/05/08 Golang
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript