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

Inserisci in blocco e ottieni gli ID restituiti laravel

Bene, puoi ottenere l'ultimo ID dalla tabella .. Quindi dopo l'inserimento aggiungi l'ultimo ID al conteggio del tuo array .. Ma dovrai affrontare un problema e cioè se 2 o più utenti hanno inserito alcuni record in questa tabella allo stesso tempo .. così puoi usare The Transaction

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

o

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

});

Documentazione delle transazioni del database

Articolo molto utile sulle transazioni di database

Modifica

Puoi creare una colonna univoca e chiamarla ad esempio unique_bulk_id .. Questo conterrà la stringa generata casualmente per i dati inseriti .. dopo l'inserimento puoi ottenere i dati inseriti da questo unique_bulk_id .