2013-12-12 29 views
5

Doszedłem do sytuacji, w której potrzebuję partycji, aby zapisać obiekty z ich obiektami pokrewnymi w grze 4. Zasadniczo to, co robię, to masowe wstawianie obiektów, w których każdy obiekt może mają wiele znaczników (relacja wiele do wielu).Batch Wstawianie obiektów z relacjami w Laravel-4

Oto przykładowy kod Zauważ, komentarze TODO:

[...] 

$batchData = array(); 
$rowCount = 0; 
foreach ($dataArray as $key => $row) { 

     [...] 

     // parsing row from CSV 
     $obj = array(); 
     foreach ($row as $attribute => $value) { 
      $obj['template_id'] = $templateId; 
      $obj['batch_id'] = $batchId; 
      $obj['user_id']  = $confideUserId; 
      $obj['created_at'] = new \DateTime; 
      $obj['updated_at'] = new \DateTime; 
      // Attach Tags if any exist 
      if ($attribute === 'tags') { 
       if (!is_null($value) || !is_empty($value)) { 
        $tags = explode(":", $value); 
        // TODO: Get tag ID for each tag and add to $obj['tags'] array 
       } 
      }    
     } 

     // add object to array 
     $batchData[$rowCount] = $obj; 
     ++$rowCount; 

     if ($rowCount == \Config::get('app.maxCSV')) { 
      try { 
       // TODO: Batch Insert With Related tags?? 
       $obj_model_name::insert($batchData); 
      } catch (Exception $e) { 
       return false; 
      } 
      $rowCount = 0; 
      $batchData = array(); 

     } 
    } 

    [...] 

mogę wstawić każdy obiekt jeden po drugim z ich relacji, ale problemem jest to, że masowy wstawić te obiekty za pomocą pliku CSV, gdzie możemy mieć od setek do setek tysięcy obiektów.

Ktoś ma jakieś wskazówki?

FYI baza danych używana jest MSSQL 2012.

Cheers,

Odpowiedz

1

Po patrząc na to dalej, doszedłem do wniosku, że najlepiej byłoby, aby ponownie-Factor moją logikę. Teraz zapisuję każdy obiekt osobno przed przypisaniem znaczników do tego obiektu i powtarzam dla wszystkich obiektów.

Może to nie być skuteczne, gdy istnieje wiele obiektów, ale jak na razie nie jest to możliwe do przewidzenia.