Heim  >  Artikel  >  PHP-Framework  >  Detaillierte Erklärung der PHP-Batch-Einfügung basierend auf dem Laravel-Framework (Tutorial)

Detaillierte Erklärung der PHP-Batch-Einfügung basierend auf dem Laravel-Framework (Tutorial)

烟雨青岚
烟雨青岚nach vorne
2020-07-15 13:31:484627Durchsuche

Detaillierte Erklärung der PHP-Batch-Einfügung basierend auf dem Laravel-Framework (Tutorial)

In der täglichen Entwicklung gibt es ziemlich viele Stapeleinfügungsvorgänge. Ich erinnere mich, dass ich vor langer Zeit noch SQL-Einfügungen in einer Schleife schrieb, aber vom Projektmanager auf den Boden gedrückt und gerieben wurde. Nun, die Leistung ist in Ordnung, wenn sie nicht verwendet wird. Wenn die Leistung zum Engpass wird, werden die Codeoptimierung und die Datenbankoptimierung die Hauptlast tragen.

Öffnen wir ohne weiteres den Code!

1. Schauen Sie sich zunächst das Laravel5.1-Handbuch an

Detaillierte Erklärung der PHP-Batch-Einfügung basierend auf dem Laravel-Framework (Tutorial)
Wie auf dem Bild zu sehen ist: Laravel bietet die Einfügemethode zum Einfügen eines Array, das heißt, wir können ($array) direkt einfügen, um Batch-Einfügungsoperationen zu implementieren

2. Verwenden Sie zuerst die get()-Abfrage von Laravel, um das Array-Objekt abzurufen, und dann Batch-Einfügungsoperationen

$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. Erstellen Sie ein neues leeres Array

2. Durchlaufen Sie das abgefragte arr , und und Schleife Schleife bis leerZahlengruppeGruppearr und Schleife zum leeren Arrayret einfügen Bilden Sie das richtige Array-Format

3. Instanziieren Sie die Modellklasse der Datentabelle

4. Verwenden Sie die Methode model::insert($array) zum Einfügen in Stapeln

5. Das Ergebnis ist in Ordnung, die Batch-Einfügung ist erfolgreich

3. Batch-Einfügung nach Batch-Generierung von Einlösecodes

Geben Sie zuerst den Code ein:

 $num = 200;
    $codeArr = [];
    for($i=0;$i<$num;$i++){
      $code = EventCode::rand_str(8);
      $codeArr[$i][&#39;code&#39;] = $code;
    }
    /*var_dump($codeArr);
    exit;*/
    $event = new EventCode();
    $arr = $event::insert($codeArr);
    if(!$arr){
      return MyResponse::error(&#39;生成兑换码失败&#39;);
    }

1. Erstellen Sie ein neues leeres Array

2. Erzeugen Sie den Einlösecode in einer Schleife und schreiben Sie ihn in das Array

3. Drucken Sie das Array aus, nachdem es normal angezeigt wurde die insert()-Methode zum Einfügen

4. Der Einfügeeffekt ist hier auch in Ordnung,

Die Verwendung von Laravels eigener Einfügung zur Erzielung einer Stapeleinfügungseffizienz ist immer noch möglich, aber der Autor fügt eine kleine Menge ein und hat den Leistungsaspekt nicht gezielt umgesetzt. Wenn ich in Zukunft etwas finde, werde ich es aufschreiben und mit allen teilen.

Vielen Dank fürs Lesen, ich hoffe, Sie können davon profitieren

Dieser Artikel wurde reproduziert von: https://blog.csdn.net/LJFPHP/article/details/78268029

Empfohlenes Tutorial: „Laravel Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der PHP-Batch-Einfügung basierend auf dem Laravel-Framework (Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen