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模拟HTTP认证
Oct 09 PHP
如何使用PHP获取网络上文件
Oct 09 PHP
PHP系统流量分析的程序
Oct 09 PHP
php下使用无限生命期Session的方法
Mar 16 PHP
php入门学习知识点五 关于php数组的几个基本操作
Jul 14 PHP
php socket客户端及服务器端应用实例
Jul 04 PHP
PHP遍历数组的三种方法及效率对比分析
Feb 12 PHP
php恢复数组的key为数字序列的方法
Apr 28 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 PHP
phpfpm的作用和用法
Oct 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判断当前操作系统类型
2015/10/28 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
极简主义法编写JavaScript类
2017/11/02 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
什么是python的自省
2020/06/21 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
电脑教师的教学自我评价
2013/11/26 职场文书
优秀的毕业生的自我评价
2013/12/12 职场文书
文化宣传方案
2014/03/13 职场文书
《郑和远航》教学反思
2014/04/16 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
青岛导游词
2015/02/12 职场文书
优秀英文求职信范文
2015/03/19 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
2016年国庆节新闻稿范文
2015/11/25 职场文书
合作意向书怎么写
2019/06/24 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python