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