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加MYSQL服务器
Oct 09 PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
php中使用DOM类读取XML文件的实现代码
Dec 14 PHP
PHP使用数组实现队列
Feb 05 PHP
解析php中var_dump,var_export,print_r三个函数的区别
Jun 21 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
Symfony的安装和配置方法
Mar 17 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
PHP中trait使用方法详细介绍
May 21 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 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的call_user_func传reference引发的思考
2010/07/23 PHP
php中设置index.php文件为只读的方法
2013/02/06 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
根据分辩率调用不同的CSS.
2007/01/08 Javascript
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
Vue组件开发初探
2017/02/14 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
[57:47]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python爬取附近餐馆信息代码示例
2017/12/09 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
python pandas时序处理相关功能详解
2019/07/03 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
文明班级申报材料
2014/12/24 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
老公婚前保证书
2015/02/28 职场文书
python通过opencv调用摄像头操作实例分析
2021/06/07 Python