sql >> Database >  >> RDS >> Mysql

Bulk invoegen en id's terugkrijgen laravel

Welnu, u kunt de laatste id uit de tabel halen .. Voeg dan na de invoeging de laatste id toe aan de telling van uw array .. Maar u krijgt een probleem en dat is als u 2 of meer gebruikers enkele records in deze tabel hebt ingevoegd tegelijkertijd .. zodat u de transactie kunt gebruiken

 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();
}

of

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);

});

Documentatie databasetransacties

Zeer handig artikel over databasetransacties

Bewerken

U kunt een unieke kolom maken en deze bijvoorbeeld noemen unique_bulk_id .. Dit zal een willekeurig gegenereerde string bevatten voor de ingevoegde gegevens .. na het invoegen kunt u de ingevoegde gegevens krijgen door This unique_bulk_id .



  1. Opgeslagen procedures in Ruby on Rails

  2. Syntaxisfout met MySQL-scheidingsteken

  3. PostgreSQL:een berekende kolom gebruiken in dezelfde query

  4. PHP/MySQL - hoe automatisch een verwijderlink genereren voor een rij in een reeds automatisch gegenereerde tabel?