php基于laravel框架的批量插入操作

      在日常开发中,用到批量插入的操作还是挺多的。记得很早很早以前,我还是在循环中写sql插入,结果被项目经理按在地上摩擦。好吧,性能这东西,用不到的时候还好,万一性能成为瓶颈,那代码优化,数据库优化就首当其冲了。

废话不多说,开码!

一、首先是查看laravel5.1手册

这里写图片描述
      由图可知:laravel提供了insert插入数组的方法,也就是说,我们可以直接insert($array)实现批量插入的操作

二、先使用laravel的get()查询,获取数组对象,然后批量插入的操作

$ret = [];
    $create_red = new create_red();
    foreach($arr3 as $v){
      $delayDays = $v->delayDays;
      $workDays = $v->workDays;
      //获取当天时间戳的0点
      $now = strtotime(date('Y-m-d',time()));  ;
      $start = $now + $delayDays*86400;
      $start_at = date("Y-m-d H:i:s",$start);
      $end =  $now + $delayDays*86400 + $workDays*86400;
      $end_at = date('Y-m-d H:i:s',$end);
      $created_at = date("Y-m-d H:i:s",$now);
      $ret[] = [
        'uid'=>$uid,
        'status'=>1,
        'title'=>$v->title,
        'desc'=>$v->desc,
        'discount'=>$v->discount,
        'minprice'=>$v->minprice,
        'imgurl'=>$v->imgurl,
        'start_at'=>$start_at,
        'end_at'=>$end_at,
      ];
    }
    //往数据库批量插入数据
    $result = $create_red::insert($ret);
    if(!$result){
      DB::rollBack();
      return MyResponse::error(9006,'兑换优惠券失败');
    }

1、新建一个空数组
2、循环查询到的 a r r , 并 且 循 环 向 空 数 组 arr,并且循环向空数组 arrret中插入数据,形成正确的数组格式
3、实例化数据表的model类
4、使用model::insert($array)的方法批量插入
5、结果是OK的,批量插入成功

三、批量生成兑换码之后的批量插入

先上代码:

 $num = 200;
    $codeArr = [];
    for($i=0;$i<$num;$i++){
      $code = EventCode::rand_str(8);
      $codeArr[$i]['code'] = $code;
    }
    /*var_dump($codeArr);
    exit;*/
    $event = new EventCode();
    $arr = $event::insert($codeArr);
    if(!$arr){
      return MyResponse::error('生成兑换码失败');
    }

1、新建一个空数组
2、循环生成兑换码,并写入数组
3、打印数组,数组显示正常之后,利用insert()方法插入
4、这里的插入效果也是OK的,

      利laravel自带的insert实现批量插入的效率还是可以的,只不过楼主插入的量少,也没有具体实现过性能这块。以后有发现的话就再写出来分享给大家。

end

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值