批量插入数据的更安全,更有效的方法

时间:2017-06-27 19:08:54

标签: laravel

我正致力于为订单提交数据。订单可以包含多个商品,因此我需要批量插入。数据作为一个对象数组从前端发送,keys与我的表的列名相同,所以我像这样循环并保存

$input = $request->all();
foreach ($input as $arr) {
     foreach ($arr as $key => $value) {
          if (array_key_exists($key, $arr) && !empty($value)) {
               $data = array($arr);
           }
     }
     DB::table('orders')->insert($data);
}
var_dump($input)

request

enter image description here

效率这么高吗?此外,我目前正在请求一些看起来不安全的东西。是否可以只请求某些键,例如prodNameprodDesc而不是一切?

1 个答案:

答案 0 :(得分:2)

在这种情况下,效率是多余的,因为您只是接收文本和循环,充其量只是微优化。此外,我们无法知道此循环可能对您造成什么样的性能损害。

接下来,可以在循环中访问密钥,因此如果您只需要这两个密钥,那么从这两个密钥构建$ data:

$data = [
    'prodDesc' => $arr['prodDesc'],
    'prodName' => $arr['prodName']
];

当然添加逻辑以确保存在这些特定密钥,并且如果他们不知道或者其他什么就会引发错误。