批量添加这个操作,在实际开发中经常用得到,今天小编抽空给大家整理些有关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如何批量添加数据的相关知识,希望对大家有所帮助!

最新文章

  1. luogg_java学习_12_线程
  2. C语言关于利用sscanf实现字符串相加减
  3. ASP.NET 操作Excel中的DCOM配置方式
  4. CvMat结构
  5. hdu 5072 Coprime 容斥原理
  6. jQuery 判断表单中多个 input text 中至少有一个不为空
  7. 点击每一个button,弹出相应的索引号
  8. Div 不换行、垂直居中等样式
  9. hdu 3590 PP and QQ
  10. Django视图与网址传参
  11. SAP OTR 字段维护 更改SAP的字段翻译
  12. iOS-网络编程(二)文件上传和断点离线下载
  13. 理解ThreadLocal(一)
  14. ALV添加文字输入框
  15. OpenCV 1 图像分割--分水岭算法代码
  16. Cocos2dx Android环境编译出错:jni/Android.mk: Cannot find module with tag 'scripting/lua-bindings' in import path
  17. JPA Example 基本使用使用实例
  18. Docker镜像的使用
  19. Arduino IDE for ESP8266 (0) 官方API
  20. Java jdbc访问sqlserver,oracle数据库 DEMO

热门文章

  1. Python RGB 和HSV颜色相互转换
  2. ibus拼音安装_ubuntu10.04
  3. 【Java 线程的深入研究1】Java 提供了三种创建线程的方法
  4. PHP删除目录及目录下所有文件或删除指定文件
  5. [转]JVM运行时内存结构
  6. url传参错误的痛
  7. Windows绘图中的GDI映射模式
  8. 【ExtJs】 ExtJs4.2 基本表单组件的使用
  9. IT English Collection(20) of Object modeling
  10. java高级---->Thread之CyclicBarrier的使用