在日常開發中,用到批量插入的操作還是挺多的。記得很早很早以前,我還是在循環中寫sql插入,結果被項目經理按在地上摩擦。好吧,性能這東西,用不到的時候還好,萬一性能成為瓶頸,那代碼優化,數據庫優化就首當其沖了。
廢話不多說,開碼!
一、首先是查看laravel5.1手冊
??????由圖可知:laravel提供了insert插入數組的方法,也就是說,我們可以直接insert($Array)實現批量插入的操作
立即學習“PHP免費學習筆記(深入)”;
二、先使用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<p>1、新建一個空數組</p><p>2、循環生成兌換碼,并寫入數組</p><p>3、打印數組,數組顯示正常之后,利用insert()方法插入</p><p>4、這里的插入效果也是OK的,</p><p>利用laravel自帶的insert實現批量插入的效率還是可以的,只不過樓主插入的量少,也沒有具體實現過性能這塊。以后有發現的話就再寫出來分享給大家。</p><p>感謝大家的閱讀,希望大家有所收益<br></p><p>本文轉自:https://blog.csdn.net/LJFphp/article/details/78268029</p><p>推薦教程:《<a href="https://www.php.cn/phpkj/laravel/" target="_blank">Laravel教程</a>》</p>
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦