[英]Mass Assignment Insert in Eloquent
在Laravel 5.1中,我使用插入的質量分配。 但是我想學習如何用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);
批量插入的批量分配我應該怎么做? 我應該使用上一個(數據庫外觀)嗎?
因為此代碼出現錯誤(500個內部服務器錯誤)
(new OrderDetail)->create($orderDetailData);
要使用質量分配進行插入/創建,可以在Eloquent
模型中聲明一個數組,如下所示:
protected $fillable = [
'order_id',
'product_id',
'quantity',
'more fields names here...'
];
將插入定義的字段名稱。 查看文檔以獲取更多信息。 同樣,您可以使用forceCreate方法,該方法允許進行批量分配。
此外, 500 internal server error
對於特定錯誤並不明顯,因此請找出來。
這是一個示例,您可以創建數據數組,並可以按相同的方式進行插入。
$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);
你可以這樣插入
$data = array(
array('name'=>'Coder 1', 'rep'=>'4096'),
array('name'=>'Coder 2', 'rep'=>'2048'),
//...
);
OrderDetail::insert($data);
也可以填充那些文件
protected $fillable = [
'name',
'rep_id',
];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.