2013-12-12 16 views
5

私は、関連オブジェクトをlaravel 4にバッチ保存する必要がある状況に陥りました。私がやっていることは、オブジェクトの大量挿入です多くのタグを持っています(多対多の関係)。私は彼らの関係とすることにより、1対1の各オブジェクトを挿入することができますが、問題はどこ、私たちはCSV経由でこれらのオブジェクトを挿入一括ことですLaravel-4でリレーションを持つオブジェクトをバッチ挿入する

[...] 

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

     } 
    } 

    [...] 

:ここ

はTODOコメント気づく、いくつかのサンプルコードです数百から数十万のオブジェクトをどこにでも持つことができます。

誰にもヒントはありますか? FYIデータベースが使用されて

は、MSSQLは2012年

乾杯、さらにこの後に探して

答えて

1

ですが、私はそれが再要因私のロジックに最善だろうという結論になりました。私は今、個々のオブジェクトを個別に保存してから、そのオブジェクトにタグを割り当て、すべてのオブジェクトに対して繰り返します。

多くのオブジェクトがある場合、これは効率的ではない可能性がありますが、それは予期しない問題です。

関連する問題