In daily development, there are quite a lot of batch insertion operations. I remember a long time ago, I was still writing sql insertion in a loop, but was pressed to the ground and rubbed by the project manager. Well, performance is fine when not in use. If performance becomes a bottleneck, then code optimization and database optimization will bear the brunt.
Without further ado, let’s open the code!
1. First, check the laravel5.1 manual
## As can be seen from the picture: laravel provides the insert method of inserting an array, that is to say, We can directly insert($array) to implement batch insertion operations
2. First use laravel's get() query to obtain the array object, and then batch insert operations
$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,'兑换优惠券失败'); }
3. Instantiate the model class of the data table
4. Use the model::insert($array) method to insert in batches
5. The result is OK and the batch insertion is successful
3. Batch insertion after batch generation of redemption codesFirst enter the code:
$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. Create a new empty array
2. Loop to generate the redemption code and write it into the array
3. Print the array. After the array is displayed normally, use the insert() method to insert
4. The insertion effect here is also OK,
Using laravel's own insert to achieve batch insertion efficiency is still possible, but the original poster only inserts a small amount and has not specifically implemented the performance aspect. If I find anything in the future, I will write it down and share it with everyone.
Thank you for reading, I hope you will benefit from it
This article is reproduced from: https://blog.csdn.net/LJFPHP/article/details/78268029
Recommended tutorial: "
Laravel TutorialThe above is the detailed content of Detailed explanation of PHP batch insertion based on laravel framework (tutorial). For more information, please follow other related articles on the PHP Chinese website!