我有这样的表格
<form method="POST" action="/path/{{ $tran->transid }}">
{{ csrf_field() }}
<td>
<input type="text" name="pono[]" class="form-control" placeholder="Purchase Order No">
</td>
</tr>
<tr>
<td colspan="10"></td>
<td colspan="2">
<input type="submit" name="sbmt" value="Save Information" class="btn btn-primary btn-lg btn-block">
</td>
</tr>
</form>
我有一个控制器:
public function poPost(Request $request, $transid)
{
foreach ($request['pono'] as $key => $pno) {
$p = $request['pono'][$key];
Model::where('transid', $transid)->update(['poNo' => $p]);
}
return redirect('/path')->with('success', 'Update is successful');
}
我希望该列将根据每个表单字段中的内容进行更新。但是,上述结果是它用表格中的最后一个值更新“ poNo”列。拜托,我在做什么错?我需要它用每个字段的值而不是最后一个字段来更新每一行。
答案 0 :(得分:0)
每次循环都在更新数据库表中的同一条记录。 因此,最后一个值将覆盖先前的值。 如果要更新不同的行。您需要每次更新where(不同的id)不相同的id 请更具体地说明您要做什么..如果此答案对您来说不够,请给我们您的表结构以一些记录
注意:不需要:
$p = $request['pono'][$key];
您可以改用$pno
:
foreach ($request['pono'] as $key => $pno) {
Model::where('transid', $transid)->update(['poNo' => $pno]);
}