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生成文件
Jan 15 PHP
PHP5 的对象赋值机制介绍
Aug 02 PHP
Yii把CGridView文本框换成下拉框的方法
Dec 03 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
Jan 07 PHP
php 输出json及显示json中的中文汉字详解及实例
Nov 09 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
Oct 20 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 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
一个程序下载的管理程序(四)
2006/10/09 PHP
PHP实现QQ空间自动回复说说的方法
2015/12/02 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
如何在Vue.js中实现标签页组件详解
2019/01/02 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
python连接mysql有哪些方法
2020/06/24 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
python实现视频压缩功能
2020/12/18 Python
网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
2016/03/27 面试题
工程师求职简历的自我评价分享
2013/10/10 职场文书
医学实习生自我鉴定
2013/12/12 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
Python WSGI 规范简介
2021/04/11 Python
Redis的字符串是如何实现的
2021/10/24 Redis
德生2P3收音机开箱评测
2022/04/30 无线电
Python实现双向链表基本操作
2022/05/25 Python
教你如何用cmd快速登录服务器
2022/06/10 Servers