Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Inserção em massa e obter IDs retornados laravel


Bem, você pode obter o último id da tabela .. Então após a inserção adicione o último id à contagem do seu array .. Mas você enfrentará um problema e isso é se você tiver 2 ou mais usuários inseridos alguns registros nesta tabela ao mesmo tempo .. para que você possa usar a transação
 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();
}

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

});

Documentação de transações de banco de dados

Artigo muito útil sobre transações de banco de dados

Editar


Você pode criar uma coluna exclusiva e chamá-la por exemplo unique_bulk_id .. Isto irá conter uma string gerada aleatoriamente para os dados inseridos .. após a inserção você pode obter os dados inseridos por Este unique_bulk_id .