Laravel在表单中的foreach只获取最后一行。
Laravel在表单中的foreach只获取最后一行。
我正在尝试通过表单更新餐厅菜单。首先,我通过foreach将菜单类别的所有内容放入输入值中,以便它们都可以编辑并预先设置好以供编辑。现在的大问题是,每当我尝试完全编辑表单时,它只编辑最后一行,因为那是最后接收到的,从而忽略了其他行。我该如何使表单提交foreach中请求的所有项目?为每个项目创建一个表单将是一个大问题,因为那样每一行都会有一个按钮,这会影响生产力。
Blade视图:
控制器:
public function editsubmit(Request $req) { update::where('id',$req->id) ->update(['product_name'=>$req->name]); return redirect('/admin'); }
问题的原因是在表单中使用了foreach循环来遍历记录,但是最后只能获取到最后一行记录的值。
解决方法是给输入框的name属性设置为数组形式,以便将所有记录都保存在一个容器中。在控制器中使用foreach循环来遍历请求中的记录数组,并根据记录的id更新相应的模型。
具体代码如下:
// 在控制器中 ... 进行验证 ... foreach ($request->input('records', []) as $id => $record) { Model::findOrFail($id)->update($record); }
注意,`Model`是模型的占位符,需要根据实际情况替换为模型的名称。另外,模型需要设置`$fillable`属性,以允许以这种方式填充字段。
这样就可以通过更新查询将记录的值更新到数据库中。如果需要同时编辑`product_price`字段,需要在代码中添加逗号分隔。
希望你能成功完成项目的剩余部分。祝你好运!