我正在使用Angular2作为我的前端和laravel用于我的后端。我试图解析一个数组并将所有数据存储到不同的行,但目前只有最后收到的记录被保存到数据库中。
public function SaveOrder(Request $request) {
$input = $request->all();
$order = new Order;
foreach ($input as $arr) {
foreach ($arr as $key => $value) {
if (array_key_exists($key, $arr) && !empty($value)) {
$order->$key = $value;
}
}
}
$order->save();
}
$input = $request->all();
foreach ($input as $arr) {
var_dump($arr);
foreach ($arr as $key => $value) {
if (array_key_exists($key, $arr) && !empty($value)) {
}
}
}
数组的var_dump
答案 0 :(得分:1)
如果仔细观察一下,您会发现if (myNav.tips!= undefined) {
// Your code
}
方法会循环显示给定的集合,为SaveOrder
和$order->$key = $value
设置productName
- 并且下一次迭代覆盖这些值。这就是为什么,当你{Order}模型productDesc
时,你所插入的只是最后一个(迭代的)值对。
您应该做的是构建一个数组数组,包含要插入的所有“行”,然后执行 bulk insert 。
答案 1 :(得分:0)
谢谢@lesssugar我想出来虽然我有这样做的第二个想法,因为它似乎效率低下
public function saveOrder(Request $request) {
$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('test')->insert($data);
}
}