Laravel如何保存for循环中的数据
Posted
技术标签:
【中文标题】Laravel如何保存for循环中的数据【英文标题】:Laravel how to save data which in forloop 【发布时间】:2015-08-25 03:41:43 【问题描述】:我有需要保存到数据库中的数据。这是示例 现在我的控制器:
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
有什么解决办法吗?提前谢谢你。
【问题讨论】:
你不想使用foreach
loop?
我不知道如何使用与我的代码相关的 foreach。你能举个例子吗? @aldrin27
$request
的结果是什么?
如果我将它返回到 json.. 这是输出 imgur.com/lCSKYX8
@Kerwin,将表单与您的表列名称匹配。这样,当您提交表单时,您可以将它们传递给 $model -> fill($request ->all());您将节省大量代码和大量时间。
【参考方案1】:
你每次迭代都调用填充,最好先构建数据然后进行批量插入
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.
希望这会有所帮助。
【讨论】:
非常感谢。我从没想过那个 DB::table(table name)以上是关于Laravel如何保存for循环中的数据的主要内容,如果未能解决你的问题,请参考以下文章
Swift 中的核心数据:仅在 for 循环中保存最后一个对象