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中的串行化变量和序列化对象
Sep 05 PHP
用PHP和ACCESS写聊天室(七)
Oct 09 PHP
PHP新手上路(十四)
Oct 09 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
PHP中PDO的事务处理分析
Apr 07 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
使用PHP json_decode可能遇到的坑与解决方法
Aug 03 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 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
php.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
PHPThumb图片处理实例
2014/05/03 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
mouse_on_title.js
2006/08/25 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
js+canvas实现画板功能
2020/09/13 Javascript
python类和函数中使用静态变量的方法
2015/05/09 Python
浅析Python的Django框架中的Memcached
2015/07/23 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
美国家居装饰店:Z Gallerie
2020/12/28 全球购物
广州地球村科技数据库题目
2016/04/25 面试题
市级三好学生事迹材料
2014/08/27 职场文书