php - Laravel 使用 foreach 循环更新/编辑
问题描述
我试图更新我的表,但我无法让它工作。我总是以错误结束:
为 foreach() 提供的参数无效
这是我的控制器:
public function show_score($id)
{
$scores = Score::with(['lead','subject'])->where(['subject_id'=>$id])->get();
return view('markbook.show_score',compact('scores'));
}
public function update_score(Request $request)
{
$id = $request->input('id');
$scores = Score::find($id);
foreach ($scores as $datas) {
$datas->jan_ap=$request->input('jan_ap');
$datas->jan_hm=$request->input('jan_hm');
$datas->save();
}
}
route:
Route::get('markbook/scores/{id}', 'MarkbookController@show_score' );
Route::post('markbook/scores', 'MarkbookController@update_score');
这是我试图循环更新分数的表:
解决方案
从聊天讨论中发现您要更新多个分数,这些分数在 tr, td 中列出。你可以像这样改变它
改变看法
@foreach($scores as $score)
<tr>
<td>{{$score->lead->student_name}} <input type="hidden" name="scores[{{$loop->index}}][id]" value="{{$score->id}}"></td>
<td><input type="text" name="scores[{{$loop->index}}][jan_ap]" value="{{$score->jan_ap}}"></td>
<td><input type="text" name="scores[{{$loop->index}}][jan_hm]" value="{{$score->jan_hm}}"></td>
</tr>
@endforeach
控制器更新分数
public function update_score(Request $request)
{
$scores = $request->input('scores'); //here scores is the input array param
foreach($scores as $row){
$score = Score::find($row['id']);
$score->jan_ap = $row['jan_ap'];
$score->jan_hm = $row['jan_hm'];
$score->save();
}
}
推荐阅读
- python - 从 PyQt5 转换为 PyQt4
- web - 延迟与持续时间:解读 Firefox 的 Web 开发人员工具的指标
- powershell - PowerShell:如何使用/从另一个 ps1 文件导入脚本块
- android - Firebase 云消息传递 - 主题和用户细分是独立的吗?
- javascript - 如何模拟单击 DataTable 中当前突出显示的行?
- regex - 有没有办法从 Google 表格的多行中查找和删除日期时间?
- php - 如何在 wp_head 中访问作者元 (get_the_author_meta)
- sql - 设置更新 SQL Server 表中的行的默认日期
- java - 带有扩展的@UniqueConstraint 问题
- ruby-on-rails - Heroku Ruby 部署 H10 错误端口问题