Laravel在表单中的foreach只获取最后一行。

8 浏览
0 Comments

Laravel在表单中的foreach只获取最后一行。

我正在尝试通过表单更新餐厅菜单。首先,我通过foreach将菜单类别的所有内容放入输入值中,以便它们都可以编辑并预先设置好以供编辑。现在的大问题是,每当我尝试完全编辑表单时,它只编辑最后一行,因为那是最后接收到的,从而忽略了其他行。我该如何使表单提交foreach中请求的所有项目?为每个项目创建一个表单将是一个大问题,因为那样每一行都会有一个按钮,这会影响生产力。

Blade视图:

@foreach ($Voorgerecht as $item) @csrf @endforeach

控制器:

public function editsubmit(Request $req) {
    update::where('id',$req->id)
    ->update(['product_name'=>$req->name]);
    return redirect('/admin');
}

0
0 Comments

问题的原因是在表单中使用了foreach循环来遍历记录,但是最后只能获取到最后一行记录的值。

解决方法是给输入框的name属性设置为数组形式,以便将所有记录都保存在一个容器中。在控制器中使用foreach循环来遍历请求中的记录数组,并根据记录的id更新相应的模型。

具体代码如下:

@foreach ($Voorgerecht as $item) ... ... @endforeach

// 在控制器中
... 进行验证 ...
foreach ($request->input('records', []) as $id => $record) {
    Model::findOrFail($id)->update($record);
}

注意,`Model`是模型的占位符,需要根据实际情况替换为模型的名称。另外,模型需要设置`$fillable`属性,以允许以这种方式填充字段。

这样就可以通过更新查询将记录的值更新到数据库中。如果需要同时编辑`product_price`字段,需要在代码中添加逗号分隔。

希望你能成功完成项目的剩余部分。祝你好运!

0
0 Comments

问题原因:在使用foreach循环遍历表单时,只有最后一行的数据被正确地提交,其他行的数据未能正确提交。

解决方法:将表单字段修改为以数组形式进行提交,代码如下:


通过添加`$loop->index`使得所有字段可以正确组合。

然而,即使修改了表单字段,仍然存在问题:只有id为1的行被正确编辑,其他行的数据都被放入了第一行。

代码和问题分析:

SQL: update Products set product_name = ? where id = 3

此处的SQL语句只对id为3的行进行了编辑,所以其他行的数据未能被正确更新。

解决方法就是要在循环中根据每一行的id来进行更新操作。

0