您的位置 首页 php

详细解说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、循环查询到的arr,并且循环向空数组arr,并且循环向空数组ret中插入数据,形成正确的数组格式

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实现批量插入的效率还是可以的,只不过楼主插入的量少,也没有具体实现过性能这块。以后有发现的话就再写出来分享给大家。

文章来源:智云一二三科技

文章标题:详细解说php基于laravel框架的批量插入(教程)

文章地址:https://www.zhihuclub.com/27175.shtml

关于作者: 智云科技

热门文章

网站地图