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学习笔记之数组篇
Jun 28 PHP
php中检查文件或目录是否存在的代码小结
Oct 22 PHP
PHP以及MYSQL日期比较方法
Nov 29 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
Linux系统下php获得系统分区信息的方法
Mar 30 PHP
php实现递归的三种基本方式
Jul 04 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
Mar 21 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
Mar 13 PHP
thinkphp框架类库扩展操作示例
Nov 26 PHP
Yii 框架使用Forms操作详解
May 18 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
IStream与TStream之间的相互转换
2008/08/01 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
Python写的贪吃蛇游戏例子
2014/06/16 Python
让Django支持Sql Server作后端数据库的方法
2018/05/29 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
python for 循环获取index索引的方法
2019/02/01 Python
大数据分析用java还是Python
2020/07/06 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
使用django自带的user做外键的方法
2020/11/30 Python
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
安全检查与奖惩制度
2014/01/23 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
Python Django获取URL中的数据详解
2021/11/01 Python
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android