日々の開発では、バッチ挿入操作が非常に多く発生します。昔、私はまだSQL挿入をループで書いていたのですが、プロジェクトマネージャーに地面に押しつけられ、こすられたことを思い出します。パフォーマンスは、使用していないときは問題ありませんが、パフォーマンスがボトルネックになると、コードの最適化とデータベースの最適化が矢面に立つことになります。
早速、コードを開いてみましょう。
1. まず、laravel5.1 マニュアルを確認してください
# 写真からわかるように、laravel には配列を挿入する insert メソッドが用意されています。つまり、直接 insert($array) を実行してバッチ挿入操作を実装できます
#2. まず、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,'兑换优惠券失败'); }
#a
3.引き換えコードのバッチ生成後のバッチ挿入
最初にコード$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('生成兑换码失败'); }
2. ループ内で引換コードを生成し、配列
3. 配列を出力します。配列が正常に表示されたら、insert() を使用します。メソッドを挿入する 4. ここでの挿入効果も問題ありません、laravel 独自の挿入を使用してバッチ挿入の効率を達成することはまだ可能ですが、作成者による挿入の数は少ないため、パフォーマンスは特に実装されていません。今後何か発見したら、書き留めてみんなに共有します。 お読みいただきありがとうございます。ご活用いただければ幸いです
この記事は、https://blog.csdn.net/LJFPHP/article/details/78268029 から転載しています。
推奨チュートリアル:「
Laravel チュートリアル」
以上がlaravelフレームワークによるPHPバッチ挿入の詳細説明(チュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。