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 相关文章推荐
快速配置PHPMyAdmin方法
Jun 05 PHP
PHP 文件类型判断代码
Mar 13 PHP
PHP 分页原理分析,大家可以看看
Dec 21 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
Aug 06 PHP
使用php实现下载生成某链接快捷方式的解决方法
May 07 PHP
PHP中set_include_path()函数相关用法分析
Jul 18 PHP
PHP反射API示例分享
Oct 08 PHP
php 查找数组元素提高效率的方法详解
May 05 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
May 28 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
Feb 10 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打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
php导入模块文件分享
2015/03/17 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
2019/02/20 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
javascript ajax 仿百度分页函数
2013/10/29 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
AngularJS中的过滤器使用详解
2015/06/16 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
Js视频播放器插件Video.js使用方法详解
2020/02/04 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
Python中获取对象信息的方法
2015/04/27 Python
django 外键model的互相读取方法
2018/12/15 Python
python字符串格式化方式解析
2019/10/19 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
人力资源部门的主要职能
2014/02/22 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书
工程承诺书怎么写
2014/05/24 职场文书
自我检讨报告
2015/01/28 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python