Mysql
 sql >> Base de données >  >> RDS >> Mysql

Insertion en masse et récupération des identifiants laravel

Eh bien, vous pouvez obtenir le dernier identifiant de la table .. Ensuite, après l'insertion, ajoutez le dernier identifiant au nombre de votre tableau .. Mais vous serez confronté à un problème et c'est si vous avez 2 utilisateurs ou plus insérés certains enregistrements dans cette table en même temps .. vous pouvez donc utiliser 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();
}

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

});

Documentation des transactions de la base de données

Article très utile sur les transactions de base de données

Modifier

Vous pouvez créer une colonne unique et l'appeler par exemple unique_bulk_id .. Cela contiendra une chaîne générée aléatoirement pour les données insérées .. après l'insertion, vous pouvez obtenir les données insérées par This unique_bulk_id .