sql >> Database teknologi >  >> RDS >> Mysql

Bulk indsæt og få returneret ids laravel

Nå, du kan få det sidste id fra tabellen .. Så efter indsættelsen føje det sidste id til antallet af dit array .. Men du vil stå over for et problem, og det er, hvis du har 2 eller flere brugere indsat nogle poster i denne tabel på samme tid .. så du kan bruge Transaktionen

 try{
    DB::beginTransaction();

   // 1- get the last id of your table ($lastIdBeforeInsertion)

   // 2- insert your data
    Model::insert($array);

  // 3- Getting the last inserted ids
  $insertedIds = [];
  for($i=1; $i<=theCountOfTheArray; $i++)
     array_push($insertedIds, $lastIdBeforeInsertion+$i);

});

    DB::commit();
}catch(\Exception $e){
    DB::rollback();
}

eller

DB::transaction(function() {

   // 1- get the last id of your table ($lastIdBeforeInsertion)

   // 2- insert your data
   Model::insert($array);

  // 3- Getting the last inserted ids
  $insertedIds = [];
  for($i=1; $i<=theCountOfTheArray; $i++)
     array_push($insertedIds, $lastIdBeforeInsertion+$i);

});

Dokumentation af databasetransaktioner

Meget nyttig artikel om databasetransaktioner

Rediger

Du kan lave en unik kolonne og kalde den for eksempel unique_bulk_id .. Dette vil holde tilfældigt genereret streng for de indsatte data .. efter indsættelsen kan du få de indsatte data ved hjælp af dette unique_bulk_id .



  1. Lagret procedure forårsager kommandoer ude af synkronisering ved næste forespørgsel

  2. hvordan man bruger check constraint i oracle

  3. Sammenligning af databasekolonnetyper i MySQL, PostgreSQL og SQLite? (Cross-mapping)

  4. En ekspertvejledning til Slony-replikering til PostgreSQL