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

有什么解决办法吗?提前谢谢你。

【问题讨论】:

你不想使用foreachloop? 我不知道如何使用与我的代码相关的 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循环中的数据的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中的 for 循环外访问变量

Swift 中的核心数据:仅在 for 循环中保存最后一个对象

如何在matlab中保存通过for循环生成的数据?

如何在 laravel 刀片的 for 循环中设置值

将 for 循环的结果附加到 Laravel 中的 eloquent 输出

laravel 刀片模板中的 Vue.js v-for 循环