注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

背归鸿

博闻强记,厚积薄发!

 
 
 

日志

 
 

关于Thinkphp addAll()失败的问题  

2015-12-21 22:58:05|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
TP的addAll()方法对于批量的添加确实很好用,不过昨天出问题了.
我的代码是这样的

foreach($goods_size as $k=>$v){
$size[$k]['goods_id'] = $goods_id;
$size[$k]['size'] = $v['size'];
$size[$k]['total_count'] = $v['count'];
}
M('GoodsSize')->addAll($size); //写入尺码数据

看起来问题不大,
.后来仔细看了一下TP addAll()的源代码,终于发现问题所在:
  1. // 写入数据到数据库
  2.  $result = $this->db->insertAll($dataList,$options,$replace);
这里用到insertAll()方法.

public function insertAll($datas,$options=array(),$replace=false) {

       if(!is_array($datas[0])) return false;

对于传入的数组先判断$datas[0],可是我传入的数组下标都是以时间戳为下标的,所以执行到这步就直接返回false,导致添加失败.
改进措施是对我要加入的数组先修改下标.而且要有[0];成功入库了!
修改后的代码为
$i = 0;
foreach($goods_size as $k=>$v){
$size[$i]['goods_id'] = $goods_id;
$size[$i]['size'] = $v['size'];
$size[$i]['total_count'] = $v['count'];
$i++;
}
M('GoodsSize')->addAll($size); //写入尺码数据
  评论这张
 
阅读(262)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017