簡體   English   中英

雄辯的批量分配插入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM