2013-12-12 12 views
5

Tôi đã đi vào một tình huống mà tôi cần phải lưu trữ các đối tượng với các đối tượng liên quan của chúng trong Laravel 4. Về cơ bản những gì tôi đang làm là chèn một số lượng lớn các đối tượng. có nhiều thẻ (quan hệ nhiều-nhiều).Các đối tượng chèn hàng loạt với các quan hệ trong Laravel-4

Dưới đây là một số mẫu mã, hãy chú ý các ý kiến ​​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(); 

     } 
    } 

    [...] 

tôi có thể chèn từng đối tượng một-by-một với các mối quan hệ của họ, nhưng vấn đề là chúng ta số lượng lớn chèn các đối tượng này thông qua CSV, nơi chúng ta có thể có từ hàng trăm đến hàng trăm ngàn vật thể.

Bất kỳ ai cũng có bất kỳ mẹo nào?

FYI cơ sở dữ liệu được sử dụng là MSSQL 2012.

Chúc mừng,

Trả lời

1

Sau khi xem xét này hơn nữa, tôi đi đến kết luận rằng nó sẽ là tốt nhất để tái yếu tố logic của tôi. Bây giờ tôi lưu từng đối tượng riêng lẻ trước khi gán các thẻ cho đối tượng đó và lặp lại cho tất cả các đối tượng.

Điều này có thể không hiệu quả khi có nhiều đối tượng, nhưng hiện tại không phải là vấn đề có thể dự đoán trước được.

Các vấn đề liên quan