Laravel如何保存for循环中的数据
Laravel how to save data which in forloop
我有数据需要保存到数据库中。这是例子
现在我的控制器:
public function saveRequest(Request $request){
$count = count($request->input('itemname'));
$purchase = new PrRequest;
for ($i=0; $i<$count; $i++){
$data[] = array(
'pr_no' => $request->input('pr_no')[$i],
'pr_date' => $request->input('pr_date')[$i],
'department' => $request->input('department')[$i],
'remarks' => $request->input('remarks')[$i],
'notes' => $request->input('notes')[$i],
'requested_by' => $request->input('requested_by')[$i],
'item_id' => $request->input('itemname')[$i],
'qty' => $request->input('qty')[$i],
'type' => $request->input('type')[$i],
'uom' => $request->input('uom'),
'pd_date' => $request->input('pd_date')[$i]
);
$purchase->fill($data[$i])->save();
}
return Response::json($data, 200, array(), JSON_PRETTY_PRINT);
}
点击保存按钮后出现错误。
ErrorException in helpers.php line 671:
preg_replace(): Parameter mismatch, pattern is a string while replacement is an array
有什么解决办法吗?提前谢谢你。
您每次迭代都在调用 fill,最好先构建数据然后再进行批量插入
for ($i=0; $i<$count; $i++){
$data[] = array(
'pr_no' => $request->input('pr_no')[$i],
'pr_date' => $request->input('pr_date')[$i],
'department' => $request->input('department')[$i],
'remarks' => $request->input('remarks')[$i],
'notes' => $request->input('notes')[$i],
'requested_by' => $request->input('requested_by')[$i],
'item_id' => $request->input('itemname')[$i],
'qty' => $request->input('qty')[$i],
'type' => $request->input('type')[$i],
'uom' => $request->input('uom'),
'pd_date' => $request->input('pd_date')[$i]
);
$purchase->fill($data[$i])->save(); <-- remove this
}
DB::table(table name) -> insert($data); <-- this is better, one query.
希望对您有所帮助。
我有数据需要保存到数据库中。这是例子
public function saveRequest(Request $request){
$count = count($request->input('itemname'));
$purchase = new PrRequest;
for ($i=0; $i<$count; $i++){
$data[] = array(
'pr_no' => $request->input('pr_no')[$i],
'pr_date' => $request->input('pr_date')[$i],
'department' => $request->input('department')[$i],
'remarks' => $request->input('remarks')[$i],
'notes' => $request->input('notes')[$i],
'requested_by' => $request->input('requested_by')[$i],
'item_id' => $request->input('itemname')[$i],
'qty' => $request->input('qty')[$i],
'type' => $request->input('type')[$i],
'uom' => $request->input('uom'),
'pd_date' => $request->input('pd_date')[$i]
);
$purchase->fill($data[$i])->save();
}
return Response::json($data, 200, array(), JSON_PRETTY_PRINT);
}
点击保存按钮后出现错误。
ErrorException in helpers.php line 671:
preg_replace(): Parameter mismatch, pattern is a string while replacement is an array
有什么解决办法吗?提前谢谢你。
您每次迭代都在调用 fill,最好先构建数据然后再进行批量插入
for ($i=0; $i<$count; $i++){
$data[] = array(
'pr_no' => $request->input('pr_no')[$i],
'pr_date' => $request->input('pr_date')[$i],
'department' => $request->input('department')[$i],
'remarks' => $request->input('remarks')[$i],
'notes' => $request->input('notes')[$i],
'requested_by' => $request->input('requested_by')[$i],
'item_id' => $request->input('itemname')[$i],
'qty' => $request->input('qty')[$i],
'type' => $request->input('type')[$i],
'uom' => $request->input('uom'),
'pd_date' => $request->input('pd_date')[$i]
);
$purchase->fill($data[$i])->save(); <-- remove this
}
DB::table(table name) -> insert($data); <-- this is better, one query.
希望对您有所帮助。