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 相关文章推荐
PHP4(windows版本)中的COM函数
Oct 09 PHP
如何利用php+mysql保存和输出文件
Oct 09 PHP
聊天室php&mysql(三)
Oct 09 PHP
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
PHP详细彻底学习Smarty
Mar 27 PHP
解析PHP生成静态html文件的三种方法
Jun 18 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
使用PHP编写发红包程序
Jul 22 PHP
使用Thinkphp框架开发移动端接口
Aug 05 PHP
PHP学习笔记之session
May 06 PHP
Laravel框架控制器的request与response用法示例
Sep 30 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 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利用COM对象访问SQLServer、Access
2006/10/09 PHP
PHP生成带有雪花背景的验证码
2008/09/28 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
php制作文本式留言板
2015/03/18 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
jQuery实现进度条效果代码
2015/12/17 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
如何写python的配置文件
2020/06/07 Python
如何将json数据转换为python数据
2020/09/04 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
英国运动风奢侈品购物网站:Maison De Fashion
2020/08/28 全球购物
Linux文件操作命令都有哪些
2015/02/27 面试题
公司成立感言
2014/01/11 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
作风转变年心得体会
2014/10/22 职场文书
客户经理岗位职责
2015/01/31 职场文书
小学教师教育随笔
2015/08/14 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
Python制作动态字符画的源码
2021/08/04 Python