在日常開發中,用到批次插入的操作還是挺多的。記得很早很早以前,我還是在循環中寫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、循環查詢到的
數組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實現批量插入的效率還是可以的,只不過樓主插入的量少,也沒有具體實現過性能這塊。以後有發現的話就再寫出來分享給大家。 ######推薦教學:《###Laravel###》##########以上是兩分鐘了解laravel框架中的批次插入操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!