Maison  >  Article  >  cadre php  >  Explication détaillée de l'insertion par lots PHP basée sur le framework laravel (tutoriel)

Explication détaillée de l'insertion par lots PHP basée sur le framework laravel (tutoriel)

烟雨青岚
烟雨青岚avant
2020-07-15 13:31:484610parcourir

Explication détaillée de l'insertion par lots PHP basée sur le framework laravel (tutoriel)

Dans le développement quotidien, il y a pas mal d'opérations d'insertion par lots. Je me souviens qu'il y a longtemps, j'écrivais encore une insertion SQL en boucle, mais j'ai été pressé au sol et frotté par le chef de projet. Eh bien, les performances sont bonnes lorsqu'elles ne sont pas utilisées. Si les performances deviennent un goulot d'étranglement, alors l'optimisation du code et l'optimisation de la base de données en feront les frais.

Sans plus attendre, ouvrons le code !

1. Tout d'abord, consultez le manuel de laravel5.1

Explication détaillée de linsertion par lots PHP basée sur le framework laravel (tutoriel)
Comme le montre l'image : laravel fournit la méthode d'insertion pour insérer un array, c'est-à-dire que nous pouvons directement insérer ($ array) pour implémenter l'opération d'insertion par lots

2. Utilisez d'abord la requête get() de laravel pour obtenir l'objet tableau, puis insérez par lots l'objet tableau. opération

$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. Créez un nouveau tableau vide

2. Parcourez le ar interrogé. r , et et boucle boucle à videnuméro groupearr, et boucle vers le tableau vide ret pour former le format de tableau correct

3. Instanciez la classe de modèle de la table de données

4 Utilisez la méthode model::insert($array) pour insérer par lots

<.>5. Le résultat est OK, l'insertion du lot est réussie

3. Insertion du lot après la génération par lot des codes de remboursement

Entrez d'abord le code :

 $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. Créez un nouveau tableau vide

2. Générez le code de rachat dans une boucle et écrivez-le dans le tableau

3. Imprimez le tableau une fois que le tableau est affiché normalement. , utilisez la méthode insert() pour insérer

4. L'effet d'insertion ici est également OK,

Utiliser le propre insert de Laravel pour obtenir une efficacité d'insertion par lots est toujours possible, mais l'auteur insère un petit montant et n’a pas spécifiquement mis en œuvre l’aspect performance. Si je trouve quelque chose à l’avenir, je l’écrirai et le partagerai avec tout le monde.

Merci d'avoir lu, j'espère que vous pourrez en bénéficier


Cet article est reproduit à partir de : https://blog.csdn.net/LJFPHP/article/details/78268029

Tutoriel recommandé : "

Tutoriel Laravel"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer