2015-11-03 60 views
1

在Laravel 5.1中,我正在使用質量分配插入。但我想學習如何用Eloquent進行批量插入。質譜分配Insert in Eloquent

我需要在訂購過程中插入銷售的產品。

這是我的插入數據。

foreach($cart['fields'] as $key => $product) 
    { 
     $orderDetailData[] = [ 
      'order_id'  => $orderData['order_id'], 
      'product_id'  => $product['id'], 
      'quantity'  => $product['total_quantity'], 
      'price'   => floatval($product['wholesale_price']), 
      'vat'   => $product['vat'], 
      'vat_value'  => floatval($product['vat_value']), 
      'discount_ratio' => $product['discount_ratio'], 
      'discount'  => floatval($product['discount_value']), 
      'total_amount' => floatval($product['total_amount']), 
     ]; 
    } 

這裏是我的插入

(new OrderDetail)->create($orderDetailData); 

代碼,我覺得這個方法不支持大容量插入。

在Laravel 5.1 Manuel我看到這個。

DB::table('table')->insert($orderDetailData); 

對於批量插入的批量分配我該怎麼做?我應該用以前的一個(DB門面)

,因爲我得到錯誤(500內部服務器錯誤),此代碼

(new OrderDetail)->create($orderDetailData); 
+0

什麼是錯誤說'500內部服務器error'? –

+0

當您手動設置字段時,您爲什麼會擔心質量分配?當人們想要做類似Model :: create($ request-> all())的時候,質量分配就成了一個問題,而不是當他們手動指定哪個字段被添加時。 –

回答

0

要使用大規模作業中插入/ CREAE您可以在聲明數組你Eloquent模型像這樣的:

protected $fillable = [ 
    'order_id', 
    'product_id', 
    'quantity', 
    'more fields names here...' 
]; 

定義的字段名稱將被插入。檢查documentation瞭解更多信息。您也可以使用允許批量分配的forceCreate方法。

此外,500 internal server error是不明確的關於具體的錯誤,所以找出它。

0

這是一個例子,您可以創建數據的數組,並且可以在這裏插入相同的數據。

$data = array(
    array(
     'name'=>'Coder 1', 'rep'=>'4096', 
     'created_at'=>date('Y-m-d H:i:s'), 
     'modified_at'=> date('Y-m-d H:i:s') 
     ), 
    array(
     'name'=>'Coder 2', 'rep'=>'2048', 
     'created_at'=>date('Y-m-d H:i:s'), 
     'modified_at'=> date('Y-m-d H:i:s') 
     ), 
    //... 
); 

YourModelName::create($data); 
0

你可以插入方式

$data = array(
array('name'=>'Coder 1', 'rep'=>'4096'), 
array('name'=>'Coder 2', 'rep'=>'2048'), 
//... 
); 
OrderDetail::insert($data); 

也使可填寫那些的Fileds

protected $fillable = [ 
'name', 
'rep_id', 
]; 
+0

我已經使用可填充。但我不知道我可以靜態調用OrderDetail模型的方法。 –

+0

@CihanKüsmez是的,你可以靜態調用 –

+0

可以靜態調用來自控制器的模型的每種方法? –