sql >> Base de Datos >  >> RDS >> Mysql

Inserción masiva y obtención de identificadores devueltos laravel

Bueno, puede obtener la última identificación de la tabla ... Luego, después de la inserción, agregue la última identificación al conteo de su matriz ... Pero enfrentará un problema y eso es si tiene 2 o más usuarios insertado algunos registros en esta tabla al mismo tiempo .. para que pueda usar 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);

});

Documentación de transacciones de la base de datos

Artículo muy útil sobre transacciones de bases de datos

Editar

Puede crear una columna única y llamarla, por ejemplo, unique_bulk_id .. Esto contendrá una cadena generada aleatoriamente para los datos insertados .. después de la inserción, puede obtener los datos insertados mediante este unique_bulk_id .