我正致力于为订单提交数据。订单可以包含多个商品,因此我需要批量插入。数据作为一个对象数组从前端发送,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
效率这么高吗?此外,我目前正在请求一些看起来不安全的东西。是否可以只请求某些键,例如prodName
和prodDesc
而不是一切?
答案 0 :(得分:2)
在这种情况下,效率是多余的,因为您只是接收文本和循环,充其量只是微优化。此外,我们无法知道此循环可能对您造成什么样的性能损害。
接下来,可以在循环中访问密钥,因此如果您只需要这两个密钥,那么从这两个密钥构建$ data:
$data = [
'prodDesc' => $arr['prodDesc'],
'prodName' => $arr['prodName']
];
当然添加逻辑以确保存在这些特定密钥,并且如果他们不知道或者其他什么就会引发错误。