sql >> Databasteknik >  >> RDS >> Mysql

Bulk infoga och få tillbaka ids laravel

Tja, du kan få det sista ID:t från tabellen .. Sedan efter infogningen lägg till det sista ID:t till räkningen av din array .. Men du kommer att möta ett problem och det är om du har 2 eller fler användare infogat några poster i den här tabellen samtidigt .. så att du kan använda Transaktionen

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

eller

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

});

Databastransaktionsdokumentation

Mycket användbar artikel om databastransaktioner

Redigera

Du kan skapa en unik kolumn och kalla den till exempel unique_bulk_id .. Detta kommer att hålla slumpmässigt genererad sträng för infogade data .. efter infogningen kan du hämta infogade data genom detta unique_bulk_id .



  1. Hur använder man en procent (%) i en LIKE utan att den behandlas som ett jokertecken?

  2. rumsfel:Kolumnerna som returneras av frågan har inte fälten fältnamn

  3. GroupingError:ERROR:kolumnen måste visas i GROUP BY-satsen eller användas i en aggregerad funktion

  4. Hur testar jag i WiX om det finns en registernyckel (inte värde) för Oracle ODP.Net