您现在的位置是:网站首页>软件开发>开发终端>thinkphpthinkphp

foreach下使用save向数据库存数据,只能存一次,如何解?

风口下的猪2019-06-09thinkphp

简介

 错题症状

在实际开发过程中,我们会循环向数据库插入多次数据,但可能是tp5的本身bug,我们往往只能插入一次。


我尝试了很多次,依照tp5的开发手册,先后使用了$user->isUpdate(false)->save()、类的静态方法create()等都不行。也就是说程序执行一次中,tp5允许一个实例里向某个数据表插入数据一次。即通过循环向数据表插入多次数据是不可行的。

 错题分析

既然只能插入一次,那么就批量操作,将所有数据push进一个二维数组,将其saveAll()一次插入。

 错题解决方案

1.先申明一个一维数组,$test=['asfdf'];

2.再在foreach循环中给$test数组中push入需要插入的数据;

3.然后采用array_slice()将$test[0]裁剪出去,就得到需要批量插入数据表的数据;

4.最后使用saveAll()将数据一次插入即可。


四.注意点:

不过在这个过程中要注意几个地方,我也是没注意昨晚弄了一大晚上没搞出来,今天仔细读开发手册才发现问题:

(1)array_push是往原数组里面加数组,其返回的是新数组的长度。也就是说,要使用新得到数组即使用原数组即可,其相当于html+。

例如图片中array_push($piza,$arttagData);

我昨晚就鬼使神差地来了个$newpiza=array_push($piza,$arttagData);最后halt($newpiza)老是返回int数据(即数组长度)。正确的使用是:直接使用原来的$piza即可。

很赞哦! (0)

  • 软件开发
  • 素质要求
  • 计算机基础
  • 架构
  • 安全
  • 性能
  • 运维
  • 尾页
  • 数据库
  • 开发终端
  • 语言基础
  • 项目管理
  • 产品设计
  • 系统
  • 工作规范
  • 计算机网络
  • 前端技术栈
  • 数据结构
  • 计算机组成原理
  • 后端技术栈
  • 性能优化
  • 安全设计
  • 常见模块
  • 计算机操作系统
  • 服务器
  • python
  • MySQL
  • thinkphp
  • PHP
  • Java
  • JavaScript
  • Windows
  • Linux
  • 特效
  • indexedDB
  • vue
  • 淘宝联盟
  • Ionic
  • Angular
  • 微信小程序
  • 支付宝小程序
  • uni-app
  • css/sass/less
  • 支付
  • socket
  • 爬虫
  • web性能优化
  • 消息推送
  • CVM
  • sqlite
  • Redis
  • 前端基础
  • 基础
  • element
  • Nginx
  • yii2
  • /ponder/index.php/index/catelist/catelist/cateid/10.html

    相关阅读 (同一栏目)

    << /

    标签云

    站点信息

    • 文章统计:528篇
    • 移动端访问:扫码进入SQ3R