일상적인 개발에는 배치 삽입 작업이 꽤 많습니다. 오래 전 아직도 루프에 SQL 삽입을 작성하고 있었는데 프로젝트 매니저에게 땅바닥에 눌려 문지르던 기억이 납니다. 글쎄요, 사용하지 않을 때는 성능이 괜찮습니다. 성능에 병목 현상이 발생하면 코드 최적화와 데이터베이스 최적화가 가장 큰 타격을 받게 됩니다.
더 이상 헛소리는 그만하고 코드를 열어보자!
1. 먼저 laravel5.1 매뉴얼을 확인하세요
그림에서 알 수 있듯이 laravel에서는 배열을 삽입하는 방법을 제공합니다. 즉, 직접 삽입($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,'兑换优惠券失败'); }
1.
3. 데이터 테이블 모델 클래스를 인스턴스화합니다
4. model::insert($array) 메서드를 사용하여 일괄 삽입합니다
5. 결과는 정상이며 일괄 삽입이 성공했습니다
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('生成兑换码失败'); }
1. 새로운 빈 배열을 만듭니다
2. 상환 코드를 생성하고 배열에 씁니다
3. 배열이 정상적으로 표시되면, insert() 메서드를 사용하여 insert
4. 여기서 삽입 효과도 괜찮습니다.
laravel 자체 삽입을 사용하여 일괄 삽입 효율성을 얻는 것도 여전히 가능하지만 원본 포스터에서는 소량만 삽입하고 특별히 구현하지 않았습니다. 성능적인 측면. 앞으로 뭔가 발견하면 적어서 모두와 공유하겠습니다.
읽어주셔서 감사합니다. 혜택을 누리시길 바랍니다
이 기사는 https://blog.csdn.net/LJFPHP/article/details/78268029
추천 튜토리얼: "
Laravel Tutorial위 내용은 laravel 프레임워크 기반 PHP 배치 삽입에 대한 자세한 설명(튜토리얼)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!